我想说:
#include <iostream>
using namespace std;
int **a; //Global Variable
int main()
{
n=5;
a = new int*[n];
for ( int i = 0 ; i < n ; i++ )
a[i] = new int[n] ;
}
是否有任何realloc()方法来增加行大小? (列大小已修复) 我的意思是如果行大小是5然后我想让它6不多,只是+1。 我用
for(i=0;i<n;i++)
{
counter++;
a[i] = (int *) realloc(a[i],counter*sizeof(int));
}
但我觉得有些不对劲......
编辑:请不要建议任何矢量或类似的......因为我需要我的数组作为全局。
答案 0 :(得分:4)
realloc
仅在您使用malloc
分配时才有效。如果您使用new
,则必须delete
,然后再次使用new
(或使用类似std::vector
的内容)。
编辑:因为您要求提供如何使用malloc
的示例:
a = new int*[n];
会变成
a = (int **) malloc (n * sizeof (int *));
和
a[i] = new int[n] ;
会变成
a[i] = (int *) malloc (n * sizeof (int));
答案 1 :(得分:0)
您可以编写自己的例程来调整数组大小。
如果需要大小为N
的调整大小的块为了避免一次又一次地调用这个例程,更好地预先分配一个大块,块的大小将由你的应用程序的需要决定,并且应该避免大量调整数组的大小。
答案 2 :(得分:0)
答案是不!
C ++内存管理不包含重新分配/调整已分配内存的功能。你必须自己使用new / copy / delete语义来实现这样的东西