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)
有一些更多的信息在这里