c++ - 无法理解 new 或 malloc 如何与 BYTE* 一起工作

标签 c++ arrays malloc

我试图分配 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/

相关文章:

c - 尽管声明了 const 限定符,为什么嵌套结构成员会发生更改?

c++ - 二进制数与十进制数的转换

c++ - C++ 中的字符数组验证

java - 如何创建包含 2d Arraylist 的 2d 数组? (JAVA)

java - string 和 string[] 之间的冲突

c - 如何将 malloc 用于二维结构数组? (总线错误 : 10)

c++ - Ubuntu Linux 上的 Makefile C++11 错误

c++ - pthread读写锁不起作用吗?

python - 按二维索引对三维 numpy 数组进行排序

我可以以某种方式使用 'reserve' 内存吗,以确保 malloc 不会因此而失败