c - realloc 在函数中不起作用

标签 c realloc

int *f, *l;

int main(){
    int *a;
    a = calloc(1, sizeof(int));
    f = l = a;
    put(&a, 1);
    put(&a, 3);
    put(&a, 2);
    _getch();
    return 0;
}

void put(int **a, int d){
    printf("--%d--", sizeof(*a));          //always == 4
    void *tmp = (int *)realloc(*a, sizeof(*a) + sizeof(int)); 
    if (temp)                              //allocated succesfully
        *a = temp;
    else
        printf("Allocating a failed");
    l++;
}

我试图创建一个基于 int 指针的队列模型。

我已经稍微更正了样本。但还是失败了。 你能帮忙吗?

最佳答案

a 是一个 int 指针 (int*),因此它的大小如果是 4 字节(在您的机器上),您应该跟踪分配内存的大小。

例如:

int *f, *l;

int main(){
    int *a;
    size_tasize = 0;
    a = calloc(1, sizeof(int));
    f = l = a;
    asize = sizeof(int);
    put(a, 1, &asize);
    put(a, 3, &asize);
    put(a, 2, &asize);
    _getch();
    return 0;
}

void put(int *a, int d, size_t * asize){
    printf("--%d--\n", asize);        //always == 4
    void *tmp = (int *)realloc(a, *asize + sizeof(int));
    (*asize) += 4;
    if (tmp)
        a = tmp;      //allocated succesfully
    else
        printf("Reallocating of 'a' size %d failed\n", asize);
    l++;
}

关于c - realloc 在函数中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977763/

相关文章:

c - valgrind 报告 "Invalid write of size 8"

c - 读取输入(int)并使用 malloc 和 realloc 将其存储到数组中

c - 使用 char 进行动态内存分配

c - 注释掉未使用的行后,Switch-case 不会编译

c - 我如何解释 'main()' ?

比较字符串中的char与C中的指针

c - 如何使用 realloc 重新分配另一个大小

C 程序在 2 次重新分配后崩溃

c - 为什么我的程序在 Ubuntu 上显示 Segmentation Fault 但在 Geeks IDE 上运行正常?

c - 将二进制文件读入全局 unsigned int