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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.