c - 使用带双指针的 malloc 时出现段错误

标签 c pointers segmentation-fault

我正在使用类似这样的函数来分配内存(在 C 中)

void myfunction(struct mystruct** ss) {
    // some code
    *ss = malloc( 1024 * sizeof (struct mystruct) );
    // some code
}    
int main()
{
   struct mystruct **x;
   *x = NULL;
   myfunction(x);
   return 0;
}

但我遇到了段错误。这段代码有什么问题?

最佳答案

struct mystruct **x;之后,变量x未初始化。像您的程序在 *x = NULL; 中读取它是非法的。

你可能想写:

int main()
{
   struct mystruct *x;
   x = NULL;
   myfunction(&x);
   return 0;
}

但无法确定,因为您的程序没有做任何有意义的事情。 请注意 x = NULL; 无论如何都是不必要的:x 将在 myfunction() 中初始化。

关于c - 使用带双指针的 malloc 时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23572910/

相关文章:

c - 在编译时查找任何 float 最接近的 2 次方

c - 关于结构的未初始化指针赋值的语义

c - malloc 上的 sigsegv 错误让我抓狂

c++ - 简单 wxWidgets 应用程序退出时出现段错误(每当使用文本控件时)

使用 O(1) 插入操作创建邻接表

c - 如何使用批处理脚本在Windows上查找软件图标

c++ - 停止针对 GLIBC 将 strftime 转换为 __strftime_l 的链接

c++ - 如何解决指针别名问题?

C 获取对象的所有引用?

segmentation-fault - 什么时候处理 SIGSEGV 信号有意义?