> есть структура, > я выделяю ей память > например: > > struct s > { > char sz[0x100]; > }; > > s * ptr = new s[10]; > > Потом удаляю: > delete [] ptr; > > Иногда всё нормально, > иногда VC выдаёт вот что: > "DAMAGE: after Normal block (#20) at 0x00990EB0" > Как мне удалять выделенную память?? > или забить на неё???
Забивать нельзя. Приведенный код абсолютно корректен. Может глюк в программе в целом. Попробуй ввести деструктор, и посмотри, вызывается ли он 10 раз.
Иногда всё нормально,
иногда VC выдаёт вот что:
"DAMAGE: after Normal block (#20) at 0x00990EB0"
Как мне удалять выделенную память??
или забить на неё???
Я на все сто уверен, что ты привел не весь код, а только место, где у тебя все падает. Так вот - это банальный съезд по памяти. Где-то выше ты по ней проехался и теперь на ЛЮБОЙ корректной операции у тебя может вылезти "ошибка".
> есть структура, > я выделяю ей память > например: > > struct s > { > char sz[0x100]; > }; > > s * ptr = new s[10]; > > Потом удаляю: > delete [] ptr; > > Иногда всё нормально, > иногда VC выдаёт вот что: > "DAMAGE: after Normal block (#20) at 0x00990EB0" > Как мне удалять выделенную память?? > или забить на неё???
[C++] Стыдно, батенька, стыдно19.11.01 13:51 Автор: Xan Статус: Незарегистрированный пользователь
> Я на все сто уверен, что ты привел не весь код, а только > место, где у тебя все падает. Так вот - это банальный съезд > по памяти. Где-то выше ты по ней проехался и теперь на > ЛЮБОЙ корректной операции у тебя может вылезти "ошибка". Че-то я не понял - объясни еще раз плэ. как это проехался и куда это съехал -
ты имеешь в виду записал куда то за границы что-ли?
> Че-то я не понял - объясни еще раз плэ. как это проехался и > куда это съехал - > ты имеешь в виду записал куда то за границы что-ли?
Именно, записал не по тем адресам (только не надо говорить, что это не возможно !). В некоторых ситуациях это приводит к тому, что программа начинает вести себя некорректно в совершенно неожиданых местах.
Кстати, для справки: аналогичные ситуации (неправильная работа, при правильном коде) могут возникать из-за неправильной линковки.
[C++] почему вылетает еррор када я хочу удалить память?30.10.01 09:05 Автор: IgorR Статус: Незарегистрированный пользователь
> есть структура, > я выделяю ей память > например: > > struct s > { > char sz[0x100]; > }; > > s * ptr = new s[10]; > > Потом удаляю: > delete [] ptr; > > Иногда всё нормально, > иногда VC выдаёт вот что: > "DAMAGE: after Normal block (#20) at 0x00990EB0" > Как мне удалять выделенную память?? > или забить на неё???
Забивать нельзя. Приведенный код абсолютно корректен. Может глюк в программе в целом. Попробуй ввести деструктор, и посмотри, вызывается ли он 10 раз.
[C++] почему вылетает еррор када я хочу удалить память?30.10.01 07:19 Автор: u3oTon Статус: Незарегистрированный пользователь