我试图分配 10 个字节的内存
BYTE* tmp;
tmp = new BYTE[10];
//or tmp = (BYTE*)malloc(10*sizeof(BYTE));
但在 new 或 malloc 操作后 *tmp 的长度超过 10(即 '\0' 字符不在 tmp 数组中的第 10 个位置)
为什么?
最佳答案
new[]
和 malloc()
都不会为您放置 \0
。当您为 char
调用 malloc()
或 new[]
时,该 block 未初始化 - 您需要手动初始化它 - 要么将 \0
到最后一个元素,或对整个 block 使用 memset()
。
关于c++ - 无法理解 new 或 malloc 如何与 BYTE* 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2468165/