C++ new*char不是空的

Kac*_*łat 8 c++ null pointers char

我有一个问题.

我在ASIO中开发服务器,数据包是尖头char.

当我创建新的char(例如char * buffer = new char[128];)时,我必须手动将其清理为空值.

通过:

for(int i =0;i<128;i++)
{
buffer[i] = 0x00;
}
Run Code Online (Sandbox Code Playgroud)

我做错了,那个字母不清楚?

jua*_*nza 19

您不必遍历未初始化的值数组.您可以像这样动态实例化零数组:

char * buffer = new char[128](); // all elements set to 0
                             ^^
Run Code Online (Sandbox Code Playgroud)


Mik*_*ine 12

在C++中调用new运算符有两种方法 - 默认初始化和零初始化.

要默认初始化(将保留未定义的值),请调用:

int * i = new int;
Run Code Online (Sandbox Code Playgroud)

然后,在设置之前读取或使用该值是未定义的行为.

要将零初始化(将设置为0)使用:

int * i = new int();
Run Code Online (Sandbox Code Playgroud)

这也适用于数组:

int * i = new int[4]; // ints are not initialised, you must write to them before reading them
int * i = new int[4](); // ints all zero initialised
Run Code Online (Sandbox Code Playgroud)

有一些更多的信息在这里