Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |
[C++] почему вылетает еррор када я хочу удалить память? 29.10.01 21:20 Число просмотров: 975
Автор: ggg <ggg> Статус: Elderman
|
забивать уж точно не надо
у тебя где то глюк в проге
где то пишешь не туда куда нужно
|
|
<programming>
|
[C++] почему вылетает еррор када я хочу удалить память? 29.10.01 20:43
Автор: Лamo Статус: Незарегистрированный пользователь
|
есть структура,
я выделяю ей память
например:
struct s
{
char sz[0x100];
};
s * ptr = new s[10];
Потом удаляю:
delete [] ptr;
Иногда всё нормально,
иногда VC выдаёт вот что:
"DAMAGE: after Normal block (#20) at 0x00990EB0"
Как мне удалять выделенную память??
или забить на неё???
|
 |
[C++] Стыдно, батенька, стыдно 30.10.01 12:29
Автор: PS <PS> Статус: Elderman
|
Я на все сто уверен, что ты привел не весь код, а только место, где у тебя все падает. Так вот - это банальный съезд по памяти. Где-то выше ты по ней проехался и теперь на ЛЮБОЙ корректной операции у тебя может вылезти "ошибка".
> есть структура, > я выделяю ей память > например: > > 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 Статус: Незарегистрированный пользователь
|
> Я на все сто уверен, что ты привел не весь код, а только > место, где у тебя все падает. Так вот - это банальный съезд > по памяти. Где-то выше ты по ней проехался и теперь на > ЛЮБОЙ корректной операции у тебя может вылезти "ошибка". Че-то я не понял - объясни еще раз плэ. как это проехался и куда это съехал -
ты имеешь в виду записал куда то за границы что-ли?
|
 |  |  |
Ух, какое старье подняли :))) 19.11.01 13:59
Автор: PS <PS> Статус: Elderman
|
> Че-то я не понял - объясни еще раз плэ. как это проехался и > куда это съехал - > ты имеешь в виду записал куда то за границы что-ли?
Именно, записал не по тем адресам (только не надо говорить, что это не возможно !). В некоторых ситуациях это приводит к тому, что программа начинает вести себя некорректно в совершенно неожиданых местах.
Кстати, для справки: аналогичные ситуации (неправильная работа, при правильном коде) могут возникать из-за неправильной линковки.
|
 |
[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 Статус: Незарегистрированный пользователь
|
|
s * ptr = new s*[10]; если это массив из 10 указателей.(не проверено)
|
 |  |
[C++] почему вылетает еррор када я хочу удалить память? 30.10.01 07:40
Автор: u3oTon Статус: Незарегистрированный пользователь
|
Sorry !!! s * ptr[10] = new s; если это массив из 10 указателей.(не
проверено)
|
 |
[C++] почему вылетает еррор када я хочу удалить память? 29.10.01 21:20
Автор: ggg <ggg> Статус: Elderman
|
забивать уж точно не надо
у тебя где то глюк в проге
где то пишешь не туда куда нужно
|
|
|