Re[4]: malloc vs new []
От: WiseAlex Беларусь  
Дата: 25.01.08 09:13
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>
const_cast<int>(*pp) = 1;

LVV>Компилятор сообщает, что не может преобразовать const int в «чистое» int. Его, конечно, можно «обмануть», подменив указатель
так тоже можно
const_cast<int&>(*pp) = 1;
Re[5]: malloc vs new []
От: LaptevVV Россия  
Дата: 25.01.08 09:21
Оценка:
Здравствуйте, WiseAlex, Вы писали:

WA>Здравствуйте, LaptevVV, Вы писали:


LVV>>
const_cast<int>(*pp) = 1;

LVV>>Компилятор сообщает, что не может преобразовать const int в «чистое» int. Его, конечно, можно «обмануть», подменив указатель
WA>так тоже можно
WA>
const_cast<int&>(*pp) = 1;

Спасибо.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: malloc vs new []
От: kavaj  
Дата: 26.01.08 09:14
Оценка:
Здравствуйте, DemAS, Вы писали:

DAS>Здравствуйте, runtime2, Вы писали:


R>>Никогда такого не слышал

R>>Скорее всего не верно.

DAS> Хм.. а чем тогда отличается malloc() от new ?


Принципиальная разница в том, что malloc() — это библиотечная функция (единица кода),
а new — это оператор (еденица языка).
А уже из этого вытекает всё остальное, начиная от вызова конструкторов и заканчивая переносимостью.
new работает на уровне семантики языка, malloc() — на уровне указателей и байтов.
Re: malloc vs new []
От: MasterZiv СССР  
Дата: 26.01.08 11:55
Оценка: 2 (1)
DemAS пишет:

> 1. new char[1000] — гарантирует, что выделенная память будет

> представлять собой непрерывный фрагмент
Да, гарантирует.

> 2. malloc() — не гарантирует, что выделенная память будет представлять

> собой непрерывный фрагмент

Нет, вы не правы, тут тоже malloc гарантирует непрерывность.
Если бы ее не было, как бы вы по одному возвращенному указателю
до других участков памяти достучались ?

> 3. если у меня память выделена с помощью new [], то я могу обращаться к

> отдельным ее байтам по индексу:

Да, но не потому что это new, а потому что выделяли вы массив.

> 4. Если память получена в результате вызова malloc, то обращаться к

> отдельным ее байтам по индексу я не могу (вследствии 2).
Нет, не правильно, можете так же как и в случае с new.

new отличается от malloc только тем, что
-- new вычисляет размер выделяемой памяти сам, на основе типа выделяемого
объекта. malloc (и другим С-шным функциям) надо давать уже размер в байтах.
-- new — это языковое средство, и он автоматом производит инициализацию,
положенную в языке для этого типа данных. В частности, вызывается конструктор.
malloc про типы данных С/С++ и их конструкторы ничего не знает.
Posted via RSDN NNTP Server 2.1 beta
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.