c - 术语 'Segmentation fault (core dumped)' 是什么意思?

标签 c memory terminal

我有时也看到过。但我不明白这个词的意思。

最佳答案

当您尝试访问无效地址时,就会发生这种情况。它可能看起来像这样:

int* a;
*a = 4;

或者这个:

struct s {
  int a;
}

int main() {
  struct s* foo;
  foo->a = 4;
}

第一个示例中的变量 a 和第二个示例中的变量 foo 未初始化。它们不指向任何内存。如果您尝试为其赋值,则会发生段错误并且您的程序崩溃。

正确的做法是先初始化。

int* a = malloc(sizeof(int));
*a = 4;
// ...
free(a);

关于c - 术语 'Segmentation fault (core dumped)' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58956121/

相关文章:

c++ - valgrind 在使用 libxml2 时向我显示泄漏

MySQL C API : Getting `MYSQL_FIELD` array from `MYSQL_STMT` ?

c - 将 C 程序烧写到 ARM

android - 如何在 Honeycomb 中获取外部内存分配?

ios - imageWithCGImage : GCD memory issue

c - C 应用程序中 MALLOC 的资源消耗

linux - 使用 sed 删除包含特定单词的段落

linux - 如何将 tiff 图像编译为单个文本文件中的 xyz 坐标?

c - 使用 fgets() 和 echo 用 C system() 调用封装单行 AppleScript

c - Xcode 和终端中的不同输出