c++ - 我只是幸运 malloc 返回了一个零填充的缓冲区吗?

标签 c++ memory-management malloc

我尝试运行下面的代码:

int main(){
char *ptr = (char*)malloc(sizeof(char)*20);
ptr[5] = 'W';
ptr[0] = 'H';
std::cout<<ptr<<std::endl;
return 0;
} 

当我使用 GCC 4.3.4 时,我得到“H”作为输出。 Kernighan & Ritchie 的C Programming Language 一书说 malloc() 返回未初始化的空间,在这种情况下,输出应该是一些未定义的值。我的输出只是 ptr[1] 是 '\0' 的巧合结果吗?

最佳答案

是的,这只是巧合。不要依赖它。

关于c++ - 我只是幸运 malloc 返回了一个零填充的缓冲区吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462451/

相关文章:

c++ - Qt C++ 如何使用QList< >::const_iterator?

php - 需要在 PHP 中使用最少的内存使用的类似数组的结构

c - 释放内存失败

c - 在 C 中释放一个结构

javascript - 我们需要在 JavaScript 中使用 “unset” 变量吗?

c - 系统小程序 : Assertion failed - How can I solve?

c - Struct realloc 内的动态字符串数组

c++ - 点对点实际上如何在网络/端口方面工作?

c++ - 使用 Active Qt 将图片添加到 Word 后居中

c++ - 在 C++ 函数中多次使用数组