Перейти к содержанию

Переменная меняется без причины


Рекомендуемые сообщения

При запуске программы происходит segmentation fault.

Выдержка из сеанса gdb:

Breakpoint 1, main (argc=8, argv=0x7fffffd590c8) at podgon4.c:146

146 data_init(fits_massiv,dataptr,max_mag,BINSIZE,n,n,sr[0],sr[1 ]);

(gdb) x/a fits_massiv

0x7fffff8931d0: 0x773ea0

(gdb) print dataptr

$1 = (FILE *) 0x7737e0

(gdb) s

Program received signal SIGSEGV, Segmentation fault.

0x0000000000403926 in data_init (fits_massiv=Cannot access memory at address 0x7ffffee45b68

) at read_files.c:771

771 data data_init(fitsfile **fits_massiv,FILE *dataptr,float max_mag,float bin_size,int nx,int ny,float sr1,float sr2){

(gdb) x/a fits_massiv

Cannot access memory at address 0x7ffffee45b68

(gdb) print dataptr

Cannot access memory at address 0x7ffffee45b60

Суть в следующем: перед самым вызовом функции data_init проверяем значения указателей fits_massiv и dataptr - всё нормально, под них память выделена и доступна. Но как только мы вызвали эту функцию, значения указателей становятся новыми, отличающимися на 8 (всегда, я проверял) и память в том месте, куда они указывают, недоступна.

Кто виноват и что делать?

Fedora Core 4 gcc 4.0.0 gdb 6.3.0.0

Кстати, под другой конфигурацией (SuSe/gcc3.3) этой ошибки не было. Как проверить, может быть, это глюк сборки gcc под мою систему?

Ссылка на комментарий
Поделиться на другие сайты

EvilShadow писал(а) Tue, 27 February 2007 20:12

Поставьте третий gcc. Многое из того, что собирается в третьем, не собирается в четвертом.

Пробовал, но не смог.

Ссылка на комментарий
Поделиться на другие сайты

Всё оказалось очень просто: функция, в которой творилось это безобразие, возвращала структуру размером примерно 5 Мб! Я стал передавать эту структуру по указателю - и ошибка исчезла.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...