为什么在评论 malloc() 调用时会出现分段错误(核心转储)?

沙尚克
int main()
{
    struct stuff
    {
        int num;
    }*foo;

    // If I comment the line below, I get core dump error.
    // Why?
    foo = (struct stuff *)malloc(sizeof(struct stuff));
    (*foo).num = 7;

    printf("%d\n", (*foo).num);
}
苏拉夫·戈什

您只能取消引用一个有效的指针。

在您的情况下,foo作为自动局部变量,除非明确初始化,否则包含一些不确定的值,即,它指向任意内存位置,从程序的角度来看,这几乎是无效的。

如果您没有分配一个有效的指针foomalloc()例如由 返回),foo指向某个不确定的内存位置并尝试取消引用它会调用未定义的行为

分段错误是 UB 的副作用之一。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

malloc使用什么系统调用?

为什么会出现错误malloc():无效大小(未排序)?

为什么在较长的argv参数后malloc产生错误?

将cin字符串转换成node-> name时,为什么会出现分段错误(核心转储)?

为什么会出现此错误?-分段错误(核心已转储)

为什么在函数内部调用时malloc返回空指针?

使用2d数组时,为什么我的程序中出现分段错误(核心转储)错误?

为什么即使我可以访问内存,也会出现分段错误(内核已转储)?

为什么这种分段错误(核心转储)???int main(int argc,char * argv [])

当我尝试释放由malloc分配的char指针时,为什么会出现核心转储?

为什么在malloc调用中使用sizeof(int)?

为什么调用malloc()没有什么区别?

为什么会分割错误?strtok和malloc

尝试:为什么出现malloc错误

为什么会出现分段错误?

出现分段错误(核心转储)并且不明白为什么

创建链表会出现分段错误(核心转储)错误

为什么 Rcpp openmp 并行代码有时会给出:分段错误(核心转储)

为什么更改此代码时会出现“分段错误”错误?

为什么会产生分段错误(核心转储)错误?

为什么会出现此分段错误?

为什么我在 systemC 中遇到分段错误(核心转储)?

为什么 malloc() 会导致小页面错误?

分段错误(核心转储)是什么意思?

为什么从类调用 printf 时会出现分段错误?

为什么在调用 TitleScreen 实例时会出现此错误?

尝试使用 (char**)malloc() 分配内存时出现分段错误(核心转储)

为什么 malloc 从 C++ 结构访问成员引用时会产生段错误?

为什么调用 API 时会出现 CORS 错误?