Antern
написал 21 января 2007 года в 04:28 (1177 просмотров)
Ведет себя
как мужчина; открыл 20 тем в форуме, оставил 84 комментария на сайте.
всеобщий_превед.
такая вот проблема.
компилится: gcc source.cpp -o s -lstdc++
./s
Segmentation fault;
код:
#include
#include
/*include defs.h:
#define MAPX 8
#define MAPY 8
#define CITYCOL 8
#define BATLCOL 8
*/
int city[MAPX][MAPY],batl[MAPX][MAPY];
int main(int argv,char *argc[])
{
long int uid;
char login[16],passwd[16];
int mpx=0,mpy=0;
FILE* wmap;
wmap=fopen(«data/city.mp»,«r»);
for(unsigned int mp=0;mp<=CITYCOL;mp++) {
fscanf(wmap,"%d %d»,&mpx,&mpy);
city[mpx][mpy]=1;
};
fclose(wmap);
wmap=fopen(«data/batl.bt»,«r»);
for(unsigned int mp=0;mp<=BATLCOL;mp++) {
fscanf(wmap,"%d %d»,&mpx,&mpy);
batl[mpx][mpy]=1;
};
fclose(wmap);
};
ткните в ошЫбку плиз
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
strace ./s
?
execve(«./s», ["./s"], [/* 81 vars */]) = 0
uname({sys=«Linux», node=«anterny», …}) = 0
brk(0) = 0×804a000
access(«/etc/ld.so.preload», R_OK) = -1 ENOENT (No such file or directory)
open(«/etc/ld.so.cache», O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=142853, …}) = 0
old_mmap(NULL, 142853, PROT_READ, MAP_PRIVATE, 3, 0) = 0×40017000
close(3) = 0
open(«/usr/lib/libstdc++.so.6», O_RDONLY) = 3
read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\307»…, 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=882824, …}) = 0
old_mmap(NULL, 900664, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×4003a000
madvise(0×4003a000, 900664, MADV_SEQUENTIAL|0×1) = 0
old_mmap(0×4010c000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd2000) = 0×4010c000
old_mmap(0×40111000, 20024, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0×40111000
close(3) = 0
open(«/lib/tls/libc.so.6», O_RDONLY) = 3
read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1»…, 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1417095, …}) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40116000
old_mmap(NULL, 1174524, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×40117000
madvise(0×40117000, 1174524, MADV_SEQUENTIAL|0×1) = 0
old_mmap(0×40230000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×119000) = 0×40230000
old_mmap(0×40234000, 7164, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0×40234000
close(3) = 0
open(«/lib/tls/libm.so.6», O_RDONLY) = 3
read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\2203\0»…, 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=191109, …}) = 0
old_mmap(NULL, 151712, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×40236000
madvise(0×40236000, 151712, MADV_SEQUENTIAL|0×1) = 0
old_mmap(0×4025a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×23000) = 0×4025a000
close(3) = 0
open(«/lib/libgcc_s.so.1», O_RDONLY) = 3
read(3, «\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\26»…, 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=44088, …}) = 0
old_mmap(NULL, 43080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0×4025c000
madvise(0×4025c000, 43080, MADV_SEQUENTIAL|0×1) = 0
old_mmap(0×40266000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0×9000) = 0×40266000
close(3) = 0
old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40267000
mprotect(0×40230000, 4096, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0×402676c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0×40017000, 142853) = 0
brk(0) = 0×804a000
brk(0×806b000) = 0×806b000
open(«data/city.mp», O_RDONLY) = -1 ENOENT (No such file or directory)
— SIGSEGV (Segmentation fault) @ 0 (0) —
+++ killed by SIGSEGV +++
блин =)..
вот тож, только с data/*:
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0×40017000
read(3, «3 3\n2 2», 4096) = 7
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
read(3, «», 4096) = 0
close(3) = 0
munmap(0×40017000, 4096) = 0
— SIGSEGV (Segmentation fault) @ 0 (0) —
+++ killed by SIGSEGV +++
Успешность fopen надо проверять, думаю ты сам уже понял. Ошибка скорее всего в том что данные в файлах не находятся в пределах от 0 до 7, в программе это тоже не проверяется.
гм.. всё намного прозаичней.. я забыл расширение дописать к файл0 :-)