длиннее иногда всё-таки лучше ;)
От: Erop Россия  
Дата: 24.06.16 12:25
Оценка: +1
Здравствуйте, PowerUserX, Вы писали:

PUX>Проблемы нет, перед пусть кладут что угодно

Смотри, ты попросил в new int[32] 128 байт памяти, а operator new[] взял, да и выделил 132. В первые 4 положил что-то там своё, а тебе вернул адрес пятого (то есть реальный адрес блока + 4)
Если ты позовёшь с эти адресом operator delete[], то он 4 вычтет, свои данные найдёт и всё правильно сделает. В том числе и освободит ВЕСЬ блок.
А если ты позовёшь operator delete, то он просто освободит часть блока, вернее попытается, и всё...

То есть ситуация получится примерно такая:
struct XXX { 
    int hiddenField;
    int array[32];
};
int* array = new XXX->array;
delete array; // Упс


PUX>auto pBuffer = new int[32];

PUX>char* pBuffer = (char*)malloc(32 * sizeof(int));
PUX> ^
PUX> |
PUX> | — тут длиннее

PUX>и вот зачем мне писать delete [] pBuffer ?

Ну успехов тебе в труде. Не забудь прислать этот пример оригинальности и свежести своего мышления в своё партфолио и приложить к резюме, когда будешь искать след. работу...

PUX>P.S. Честно я все это писал немного шоб потролить — у нас тут все крутые

Я уже что-то начал подозревать
Держись в общем тут, и хорошего тебе настроения
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.