Используйте new
с одним объектом и new[]
с массивом объектов. Так, например:
int* x = new int; // Allocates single int
int* y = new int[5]; // Allocates an array of integers
*x = 10; // Assignment to single value
y[0] = 8; // Assignment to element of the array
Если все, что вы делаете, это выделение буфера памяти, то выделите массив char
как в:
int bufferlen = /* choose a buffer size somehow */
char* buffer = new char[bufferlen];
// now can refer to buffer[0] ... buffer[bufferlen-1]
Однако в C ++ вы действительно должны использовать std::vector
для произвольных массивов, и вы должны использовать std::string
для символьных массивов, которые должны интерпретироваться или использоваться как строки.
Нет причин явно вызывать ::operator new
или ::operator new[]
вместо использования обычного синтаксиса для этих вызовов. Для типов POD и примитивов (например, char
) инициализация не производится. Если вам нужно получить буфер void*
, просто используйте static_cast
для преобразования char*
в void*
.