c - Malloc 返回归零内存作为输出

标签 c

我使用下面提到的内容来简单了解 malloc。正如我所听说和研究的那样,malloc 会为您分配一个未初始化的存储空间。所以这个程序的输出应该是一个垃圾值。但我得到 0 作为输出。请告诉我这里出了什么问题?

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    int *x =(int*)malloc(100000000*sizeof(int));
    printf("%d",x[0]);
    return 0;
}

输出0

最佳答案

如果 malloc 返回一个空指针,并且您取消引用该空指针,则会出现未定义的行为

如果它返回NULL,那么内存的内容不确定并且在没有初始化的情况下以任何方式使用它都是< em>仍然未定义的行为。

但是为了解释您的行为,如果返回一个非空指针,则不确定值的可能值之一为零。如果你得到一个空指针,那么你可能会崩溃而不是打印一个零。

此外,某些环境在调试时可能会将内存初始化为某些值。在调试器中运行时,清除所有内容(即将大部分或所有内容设置为零)很常见

关于c - Malloc 返回归零内存作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945253/

相关文章:

C编程指针和char数组问题

c++ - 链接错误 C++ Libcurl

c - c 程序的意外行为,试图从 K&R 解决 E6-2

c - 通过 C 访问 Mac 属性文件

C 扩展整数数组

c - 使用 gcc 时 opencv 库中的链接错误

c - printf 的打印效果与 fprintf 不同

c - 如何在没有可怕的无限循环的情况下接受 float 作为用户输入

c++ - 替换我的 C++ 程序中对 "system"的调用

我可以指向代码,然后传递给下一条指令吗?