我正在尝试为指针分配内存,但有一个指向该指针地址的引用。我对 C 还是很陌生,这是我第一次真正使用双指针。 所以我有两个结构,它们看起来像这样:
typedef struct myNodes {
int data;
struct myNodes *next;
} listElement;
typedef struct {
listElement **ptrToElements;
} myStruct;
在另一个文件中,我尝试通过执行以下操作为我的指针动态分配内存:
myStruct *myStruct = malloc(sizeof(*myStruct));
*(myStruct->ptrToElements) = (listElement*)malloc(sizeof(listElement));
但我一直遇到这样的段错误。可能是什么问题?谢谢!
最佳答案
问题在于
*(myStruct->ptrToElements) ....
声明。在取消引用 myStruct->ptrToElements
之前,您需要确保它指向有效内存。
详细来说,您为 myStruct
分配内存。很好。
这构成了为成员 ptrToElements
分配内存。好。
问题:
ptrToElements
指向什么?答案:不确定。
因此,当您尝试取消引用指向不确定 内存地址的指针时,它几乎是无效的内存地址,并且尝试这样做会引发未定义的行为。
解决方案:您需要为 myStruct->ptrToElements
分配内存,然后才能继续并取消引用它。
话虽如此,请参阅do I cast the result of malloc?
关于c - 为结构中的双指针分配内存时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533688/