Null终止int数组

Sam*_*Sam 3 c++ memory arrays

如果我想在C++中动态创建一个int数组,然后在以后删除它,我是否需要null终止int数组?如果是这样,我该怎么办?如果没有,计算机如何知道要释放多少内存?

int *array = new int[x];
..do some stuff..
delete array;
Run Code Online (Sandbox Code Playgroud)

我知道对于一个char数组,它会删除一个空字符('\ 0'),如果你的字符串中没有终止空字符,你可能会得到内存冲突错误,但这是如何应用于整数数组的(和其他数组一样,结构数组)?

Ric*_*dle 6

数组使用的内存块中有一些额外的数据,这些数据对程序来说是不可见的,它可以delete说明块的大小.

你对char数组的看法是不正确的,顺便说一下- NUL终结符的存在与之无关delete- 它使用隐藏的块大小就像任何其他内存块一样.

(顺便说一句,你应该说delete [] array;当你删除数组时.)