Размещение новая против новой экспрессии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

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