【发布时间】:2021-10-15 18:50:58
【问题描述】:
我正在尝试使用动态内存分配创建一个结构数组。我的结构是这样的:
typedef struct {
char data1[200];
char data2[200];
char data3[200];
int data4;
double data5;
double data6;
} randomInfo_t;
我不知道我需要创建多少个这些结构,这就是我使用malloc() 动态创建数组的原因。
一个文件中存储了多行数据,类似于 CSV。
现在,我创建数组的尝试导致了分段错误,我怀疑这是由于我使用 malloc() 的方式造成的:
randomInfo_t *stuffArray;
int indexCounter=0;
while(fgets(buffer, 1024, fp)) {
/* some random code here */
stuffArray[indexCounter] = *(randomInfo_t *)malloc(sizeof(randomInfo_t *));
assert(stuffArray[indexCounter] != NULL);
char *readLine = strtok(buffer, " ");
while(readLine) {
strcpy(randomArray[indexCounter].data1, readLine);
etc...
}
indexCounter++;
}
我自己尝试过调试,但完全不知道自己在做什么。
感谢任何帮助。 谢谢
(PS。我知道使用链表会容易得多,我也更喜欢使用一个,但代码要求意味着没有链表)。
【问题讨论】:
-
stuffArray是一个指针。它指向什么? -
您想为
randomInfo_t的数组分配内存,还是为randomInfo_t *的数组分配内存,每个元素都指向一个单独分配的randomInfo_t?你的代码全错了,所以很难判断你要实现哪个选项。 -
在这两种情况下,您都可以使用
realloc动态扩展stuffArray内存。 -
@IanAbbott 我注意到您有使用 C 的经验。请您看看我的回答并告诉我是否有任何明显的错误。由于问题的性质,很难对其进行测试。
标签: c struct segmentation-fault malloc dynamic-memory-allocation