-
char array[1000][1000];这是放在堆栈里,如果堆栈不够大,它就不工作,不需要自己释放。
char *array = (char*)malloc(1000*1000*sizeof(char));它是一个动态应用程序,应用程序用完后必须使用空闲数组; 这个放在一堆里。 如果您申请很多,将使用保存到您使用的硬盘中的虚拟内存。
while(1)
array = malloc(10000000);
如果不释放它,您将听到硬盘驱动器响得很响亮。
-
动态阵列、new malloc、realloc 等;
vector,只需推回所有用户的输入即可。
char*p,*q;;
int a=1;
p=(char*)malloc(a);
whilea++;
q=p;p=(char*)realloc(q,a);使用 realloc 扩大 p 的空间,并为 p 分配新地址。 新的数组大小增加了 1
if(结束条件)。
break;
char*)realloc(q,20);行 A,使用 realloc 扩展 P 的空间,并为 P 分配一个新地址。
-
array[1000][1000] 的故障是堆栈不够大的原因。 如果不更改堆栈大小,请使用动态数组,则应按如下方式使用它:
int** array;(int 可以替换为另一种类型) array = (int**)malloc(1000*sizeof(int*))。
for(int i=0;i<1000;i++)array[i] = (int*)malloc(1000*sizeof(int));
这使用一个数组,就像你的数组一样。
for(int i=0;i<1000;i++)free(array[i]);
free(array);
free的语法不正确吗? 算了吧,自己看看吧。
-
C++ 语法:
int *array = new[1000][1000];
您可以构建动态数组。
delete array;
使用后,您需要释放空间;
C 语法:请求空间。
char *array = (char*)malloc(1000*1000*sizeof(char));
用完空间以释放。
free(*array);
-
指针数组。 随心所欲地创作。 无内存,动态存储。 "
真的是牛
-
使用此功能可以定义指针数组。
int **p= new int*[size];定义指针数组。
int *p[5];假设您知道二维数组中的行数为 5
然后,为指针数组中的每个指针分配一个一维数组空间,该空间动态定义二维数组。
事实上,我认为指针数组的主要目的是动态定义多维数组。
for(int i=0;i
运行后,成功动态构建二维数组。
动态数组,而不是静态数组。 静态数组的长度是预定义的,一旦在整个程序中给定大小,就无法更改。 动态数组并非如此,它可以根据程序的需要调整大小。
动态数组的内存空间是从堆中分配的(即动态分配的)。 就是通过执行**来分配存储空间。 这些语句是在程序执行它们时分配的。
程序员负责自己释放内存。
为什么要使用动态数组?
在实际编程中,经常会出现所需的内存空间取决于实际输入数据,无法预先确定的情况。 这种问题很难用静态数组解决。 为了解决上述问题,C语言提供了一些内存管理函数,可以结合指针根据需要动态分配内存空间来构建动态数组,也可以利用不再使用的空间,为内存资源的高效利用提供了手段。
动态数组与静态数组。
对于静态数组来说,创建起来非常方便,使用后不需要释放,参考简单,但创建后无法改变其大小是它的致命弱点!
对于动态数组来说,创建起来很麻烦,使用后必须由程序员释放,否则会严重造成内存泄漏。 但是,它使用起来非常灵活,可以根据程序的需要动态调整大小。
定义数组后,为了使用数组,必须为数组分配所需的内存区域。 根据内存区域分配的时间,数组可以分为静态数组和动态数组。 编译时需要分配内存的数组通常称为静态数组,需要在运行时分配的数组称为动态数组。 >>>More
前面的 l[i] 是一个 char 变量,而 new char[101] 是一个字符串空间,两个变量的类型不同,所以会产生错误。