char * buffer = new char[SIZE];
memcpy(buffer , somedata , SIZE);
buffer[SIZE]='\0';
最后一行是否会破坏内存?
buffer
是 SIZE 长度,我们将一些数据放在这个范围之外。谁能为我解释一下吗?
char * buffer = new char[SIZE];
memcpy(buffer , somedata , SIZE);
buffer[SIZE]='\0';
最后一行是否会破坏内存?
buffer
是 SIZE 长度,我们将一些数据放在这个范围之外。谁能为我解释一下吗?
是的,这是未定义的行为。你的写作超出了法律范围。
数组在 C++ 中是从 0 开始的,这意味着索引 0 到 SIZE-1 是有效的。
最后一行是否会破坏内存?
是的。
缓冲区是 SIZE 长度,我们将一些数据放在这个范围之外。
正确的。
谁能为我解释一下吗?
缓冲区是 SIZE 长度,我们将一些数据放在这个范围之外。
如果您想在 SIZE 索引处为 '\0' 字符留出空间,请创建一个大小为 SIZE+1 的缓冲区。
是的,它破坏了内存。如果数据不是以零结尾并且您想自己附加一个 0,则数组大小必须比数据大一。索引也是从零开始的,因此要设置缓冲区[SIZE],字符数必须为 SIZE+1。
char* buffer = new char[SIZE+1];
// ^^
memcpy( buffer, somedata, SIZE );
buffer[SIZE]='\0';