Размещение новая против новой экспрессииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Размещение новая против новой экспрессии

Сообщение Anonymous »

Еще раз с размещением нового Я нашел пример на этом форуме, как это:

Код: Выделить всё

char *buf  = new char[sizeof(string)]; // pre-allocated buffer
string *p = new (buf) string("hi");    // placement new
string *q = new string("hi");          // ordinary heap allocation
< /code>

[*]  Но я думаю, что здесь BUF < /code> является указателем на выделенное и построенное динамическое массив символов по умолчанию. Таким образом, символы в массиве инициализированы по умолчанию и имеют неопределенные значения. 

[*]  Я думаю, что используя новое размещение 
во второй строке будет строить объекты в ранее построенном массиве объектов. Использование нового выражения?:

Код: Выделить всё

 char *buf  = static_cast(operator new[](sizeof(string)));
, в конце концов, я думаю, что если Buff является указателем на динамический массив объектов, не содержащих деко, тогда код не сможет скомпилировать новое выражение, а не использовать новую функцию. /> < /ul>
Вот ссылка на исходный ответ: < /p>
Что есть для «размещения нового»? < /p>

Подробнее здесь: https://stackoverflow.com/questions/678 ... expression
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»