pra*_*432 0 c pointers realloc
这是一项家庭作业,所以我不想发布任何代码,但我对我所遇到的错误感到非常困惑。
目前我有一个已分配空间的数组,并将指针复制到该数组。现在,我可以使用这个数组进行 memcpy 和 memmove,效果很好。
然而,当我用它进行重新分配时,会出现无效指针错误 - 我完全不知道为什么。
有人可以帮忙吗?
realloc()malloc()仅当您传递的指针是之前从, calloc()or返回的指针时才有效realloc()(或者是NULL,在这种情况下它的工作方式与 完全相同malloc())。
您不能在数组上调用它。如果你有struct这样的情况:
struct foo {
char a;
int x[5];
double z;
};
Run Code Online (Sandbox Code Playgroud)
那么你就不能使用realloc()来增加 的大小x。您必须改为使用完全动态分配:结构成员更改为指针:
struct foo {
char a;
int *x;
double z;
};
Run Code Online (Sandbox Code Playgroud)
...当您创建 的实例时struct,您需要malloc()进行初始分配:
struct foo f;
f.x = malloc(5 * sizeof f.x[0]);
Run Code Online (Sandbox Code Playgroud)
现在您可以调用realloc()on f.x,但代价是当不再需要该结构时您还必须调用free()on 。f.x
| 归档时间: |
|
| 查看次数: |
23734 次 |
| 最近记录: |