【发布时间】:2016-04-08 11:38:39
【问题描述】:
我在一个更大的项目中遇到了这个问题,由于某种原因,realloc 函数完全没有任何作用。我错过了什么明显的东西吗?
这是一个简化的例子:
#include <stdio.h>
#include <string.h>
int main()
{
int x = 1, y = 2, z = 3;
int* arr, *arr1;
int** arra;
arra = (int**)malloc(sizeof(int*));
arr = (int*)malloc(sizeof(int));
arr[0] = x;
arra[0] = arr;
arra = (int*)realloc(arra, sizeof(int*) + sizeof(int*));
arr1 = (int*)malloc(sizeof(int));
arr1[0] = y;
arra[1] = arr1;
}
当我调试时,最终的arra 是{{1}},尽管据我了解它应该是{{1},{2}}。
【问题讨论】:
-
你需要
#include <stdlib.h>。和(int*)realloc-->(int**)realloc -
@BLUEPIXY 这正是不投
malloc()的原因之一。 -
另外,不要直接这样
realloc(),在某些情况下代码会导致内存泄漏和/或数据丢失。 -
我认为调试器不知道你分配了多少。尝试用
arr=malloc(2*sizeof(int)); arr[0]=x; arr[1]=z;替换arr=malloc(sizeof(int)); arr[0]=x;,看看调试输出是否改变。