LINUX.ORG.RU

Запусти программу под отладчиком, ищи момент обнуления указателя - похоже на выход за пределы массива.

Или ищи memset(ptr, 0, size) с неправильным size (но отладчик вернее).

tailgunner ★★★★★
()

Да, это факт. У всех так, не у тебя одного.

anonymous
()

если программа ведет себя неадекватно, то скорее всего это повреждение памяти. попробуй valgrind

generatorglukoff ★★
()

Valgrind не работает на моей платформе. Но удалось выяснить кое-что - при отладке с gdb указатель не обнуляется :)

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

Ну если указатель и так глобальный - тупо нашпиговать прогу printf'ами.
И еще, перед и после декларации указателя запихать нечто вроде -

char memory_buffer_start[MAX_PROCESSED_ALLOC_MEMORY];
void * your_ptr;
char memory_buffer_end[MAX_PROCESSED_ALLOC_MEMORY];

И memset'нуть их в какой-нибудь маркер - типа 0xee.

Прога с потоками?

vasily_pupkin ★★★★★
()
Ответ на: комментарий от vasily_pupkin

>Прога с потоками?

нет

>char memory_buffer_start[MAX_PROCESSED_ALLOC_MEMORY];
>void * your_ptr;
>char memory_buffer_end[MAX_PROCESSED_ALLOC_MEMORY];

>И memset'нуть их в какой-нибудь маркер - типа 0xee.

не очень понимаю, какой в этом смысл

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

> не очень понимаю, какой в этом смысл

Если кто-то прописывает твой указатель, этот кто-то должен будет прописать и один из memory_buffer_{start,end} (или даже оба).

Ты сказал, что под отладчиком память не приписывается - компилируется ли программа для запуска под отладкой с другими опциями?

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.