首页 > 解决方案 > int* 动态重新分配在 C 中的大小为 8 时失败?

问题描述

我想将整数存储在动态分配的 int 数组中

这是代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{

    int *arr = (int*) malloc(sizeof(int)); //Size 1 int

    for(int i = 0; i < 10 ; i++) //loop for inserting elements
    {
        arr[i] = i; //insert i element
        printf("%d\n", i + 2); //prints arr size + 1
        arr = (int*) realloc(arr, i + 2); //realloc int* size + 1
    }

    return 0;
}

这是结果:

~/eda/practica7/ $ ./test
2
3
4
5
6
7
8
realloc(): invalid next size
Aborted

无论我做什么,我的 int* arr 的 realloc 总是停止在大小 8 处。

我已经检查过是否有足够的可用内存,而且看起来确实如此。

有任何想法吗?

标签: cpointersdata-structuresmemory-managementdynamic

解决方案


推荐阅读