我刚刚了解内存动态,并做了实验,但仍然陷入困境。已经搜索了一些,但没有给出任何结果。
这是我的简单代码:
#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 会发生一些随机的段错误吗?
最佳答案
data[len]->string
应为 (*data)[len]->string
(*data) [len].string
关于c - 使用 Realloc 超过 3 次时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772404/