Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > delete или free


Автор: Evgeny84 30.5.2007, 22:25
Использую vc6.0.
В MSDN написано что правильнее использовать free((type) value)
Но насколько я помню объясняли что с new используют delete[] value, а с alloc free...

Так всёже как вернее???
(есть подозрения что после delete переменные остаются в памяти)

Автор: DigitSphinx 30.5.2007, 22:35
попробуй откомпилить это :
Код

int * k = new int;
*k = 10;
cout << "K = " << k << "  *k = " << *k << endl;
delete k;
cout << "K = " << k << "  *k = " << *k << endl;
* k = 100;
cout << "K = " << k << "  *k = " << *k << endl;

и увидишь что следующие не верно
Цитата

(есть подозрения что после delete переменные остаются в памяти)

P.S.
Цитата

HEAP[read.exe]: HEAP: Free Heap block 35a5c8 modified at 35a5f0 after it was freed
Windows has triggered a breakpoint in read.exe.
This may be due to a corruption of the heap, and indicates a bug in read.exe or any of the DLLs it has loaded.

Автор: Evgeny84 31.5.2007, 02:00
DigitSphinx, так в чём же тогда между ними разница?

Автор: Tectoder 31.5.2007, 03:56
Evgeny84, вообще говоря они могут использовать разные кучи. Считается нормальным, если free освобождает память выделенную malloc'ом, а delete - память выделенную new
Кроме того, что важно - delete вызывает деструкторы, а free - нет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)