C 重新分配内存

标签 c dynamic-memory-allocation realloc

我需要记住我用realloc()分配了多少内存。 帮我 if(!数组)

    array=(Type*) calloc(1,sizeof(Type));

else

    array=(Type*)realloc(array,(cont+1)*sizeof(Type));    



array[cont].setName(....);


cont++;

它不起作用:第一次插入后,它说:访问冲突 我在类的构造函数中初始化了 cont = 0,并在析构函数中释放了内存。

最佳答案

查看添加到代码中的注释:

int count=0;
if(!array)
    array=(Type*) calloc(count,sizeof(Type*);  // Problem:
                                               // missing )
                                               // use sizeof(Type)
                                               // calling calloc with count being zero
                                               // so you do not allocate any memory
                                               // use 1 instead of count

array[c].setName(EditName->Text);
c++;
count++;
array=(Type*)realloc(array,count*sizeof(Type*));  // Problem:
                                                  // use sizeof(Type)

所以它应该看起来:

int count=0;
if(!array)
    array=(Type*) calloc(1,sizeof(Type));

array[c].setName(EditName->Text);
c++;
count++;
array=(Type*)realloc(array,count*sizeof(Type));

在运行此代码之前,变量c必须初始化为零

同样,在运行此代码之前,array 必须为 nullptr

编辑

如果您打算多次运行此代码(我假设您这样做),那么似乎还有一个问题。

这一行:

 array=(Type*)realloc(array,count*sizeof(Type));
                            ^^^^^
              Don't use count here as you always sets count to zero

该行应为:

array=(Type*)realloc(array,c*sizeof(Type));

总的来说,count似乎没有真正的用途

关于C 重新分配内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37926184/

相关文章:

c - 简单的 c malloc

c - 使用 realloc 后,数组中的下一个指针丢失

C语言,读取自己的源文件和编辑源文件

c - 我想知道 OCIStmt 结构

c - 使用指针返回修剪后的字符串

c - 动态数组的收缩因子?

c++ - 重新分配 "random"崩溃

c - 结果错误

c++ - 为什么我的指针不是结构或 union ?

c - 使用 malloc 分配 0 字节