我只是了解内存动态,并做了实验,但仍然卡住了。已经搜索了一些,但没有给出任何结果。
这是我的简单代码:
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef struct kata kata;
struct kata {
char string[256];
};
void load(kata **data)
{
int len = 0;
while( len < 5 ) {
(*data) = (kata *) realloc ((*data), (len + 1) * sizeof(kata));
printf("copy A - %d\n", len);
strcpy(data[len]->string, "A");
len++;
}
getch();
}
int main() {
kata *data = NULL;
load(&data);
}
还有我的问题,为什么我调试它时总是出现分段错误(在 3 处)?
非常感谢您的建议
编辑 :
仍然不知道为什么会发生错误,但是我刚刚找到了解决方案..
只需将 data[len]->string 修改为 (*data)[len].string
任何想法,为什么我们称 data[len]->string 发生一些随机段错误?