LINUX.ORG.RU

[c++] malloc и new

 


0

2

встретился кусок кода

pM = (struct r*)malloc(50*sizeof(struct r));
pM = new struct r[50];
зачем вызывать new после malloc, какой от этого профит?



Последнее исправление: kyz (всего исправлений: 1)

это вам на linux.org.in с таким вопросом ;)

k0l0b0k ★★
()

Это бред. Можете править и не сомневаться.

vertexua ★★★★★
()
Ответ на: комментарий от tim239

так и подумал. решил переспросить на всякий случай, так как в сишке не особо разбираюсь.

kyz
() автор топика
Ответ на: комментарий от Legioner

забыл указать: весь остальной код - чистая сишка. поэтому никаких перезагрузок оператора new, там нет.

но более обширный ответ, по поводу new, меня интересует.

kyz
() автор топика
Ответ на: комментарий от creepnee

Зачем это нужно? Чтобы сделать обьекты на памяти выделенной malloc и потом можно чистить с помощью free? Логично, но это такой стремный костыль, что даже представить сложно зачем это нужно

vertexua ★★★★★
()
Ответ на: комментарий от kyz

google

Вкратце - можно переопределить оператор new, чтобы управлять выделением памяти самостоятельно. С другой стороны, возможно, кто то переопределил его неудачно, и пришлось избегать его вызова.

Если этого нет, то тогда смысла использовать эту конструкцию нет.

Legioner ★★★★★
()
Ответ на: комментарий от creepnee

Я о конкретно этом коде говорил, пускай он неправильный. Но выделить с помощью malloc, а потом тут же placement new?

vertexua ★★★★★
()
Ответ на: комментарий от creepnee

Интерестно, что ж это за код такой )

Да и какие два хипа? Уверен на 95%, что new вызывает malloc

vertexua ★★★★★
()

Переписывали (делали рефакторинг) и что-то забыли удалить.

mikki
()
Ответ на: комментарий от kyz

Ой, я слепой, подумал что там placement new. Да, код бредовый, согласен полностью.

Legioner ★★★★★
()

А какого типа pM? Обычный указатель или какой-то смартпойнтер?

Miguel ★★★★★
()

Для того, что бы память выделить надежнее. Типа «разрешите войти» спросить два раза.
Ну а если серьезно, то похоже на ручной рефакторинг кода глубокой ночью на автомате.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.