由于之前没有使用过realloc函数,用之前做了一个测试。
long * a = new long[5];
for (long i = 0; i < 5; i++) {
a[i] = i;
}
for (long i = 0; i < 5; i++) {
cout << a[i] << endl;
}
cout << endl;
a = (long *)realloc(a, 6);
a[5] = 6;
for (long i = 0; i < 6; i++) {
cout << a[i] << endl;
}
最简单的一个代码,从一个原本为[0 1 2 3 4]的long数组扩展到长度为6的[0 1 2 3 4 6]的数组,并且打印两个数组。然后输出结果:
realloc() 函数用来重新分配内存空间,其原型为:
void* realloc (void* ptr, size_t size);
指针 ptr 必须是在动态内存空间分配成功的指针,形如如下的指针是不可以的:int *i; int a[2];会导致运行时错误,可以简单的这样记忆:用 malloc()、calloc()、realloc() 分配成功的指针才能被 realloc() 函数接受。
不好意思不太提问,排班有点乱了,输出结果在中间,realloc后的a[1],a[2]打印出了奇怪的东西……