C语言数组动态分配内存

比如一个我需要一个int型的数组来存放数据。但开始我无法确实定数组的长度。我想当我接收到一个整数时。我就动态的为这个数申请一个内存块,以增加数组的长度。这样可不可做到。如果可以,要怎么做。

第1个回答  2011-04-14
可以,先用一个宏定义出原始长度,和将要增加的长度。用上realloc函数。追问

如果原来我int数组里以经有一些数组了。用realloc函数。不会清掉我原来的数据吧?

追答

用线性表吧

第2个回答  2011-04-14
realloc原型是 extern void *realloc(void *mem_address, unsigned int newsize);
用于内存不够时重新分配内存,返回目标内存基址,
第一个参数是原内存地址,第二个参数是申请的内存空间
该函数执行时会把原地址的值先搬过来,所以不会改变原来的数据。本回答被提问者采纳
第3个回答  2011-04-14
C语言的数组,要求维数是确定的,否则,编译出错。
你可以声明一个数组,其长度是尽可能大的维数,如int a[1000];

C语言:动态内存函数:malloc的使用详解
动态内存管理在C语言中至关重要,尤其是在空间需求不确定时。传统的数组分配方式有其局限性,固定大小且在编译时确定空间。当运行时空间需求变化时,malloc函数就显得尤为关键。malloc函数用于动态内存分配,其基本使用语法是:size_t malloc(size_t size);这里的size_t是一个无符号整型,代表你需要的内存...

【C】动态内存管理 malloc calloc relloc free 函数详解
该代码中free函数释放了malloc开辟的动态内存空间,但是没有将指针置空,导致后面调用时出现了野指针导致了非法访问。所以一个好的代码习惯是在释放动态内存空间后,将这个空间的指针置为空。5. C\/C++程序的内存开辟 C\/C++程序内存分配的几个区域:有了这幅图,我们就可以更好的理解之前介绍的static关键...

C语言-动态分配内存 malloc & free
在一个函数中动态分配的内存,在另一个函数中操作这块内存 (1) MM是一个系统级的东西,所有的应用程序都向同一个MM申请内存。(2) 何为借出?实际上,在内存被借出时,MM只是把它管理的内存标记了一下,表示该段内存已经被占用。比如,它把每一段被占用的内存给记录下来(首地址,长度) (p0,n...

[C语言] 5分钟看懂什么是 malloc
动态内存分配是C语言中一个关键概念,它允许程序员在程序运行时动态地分配和释放内存。初学数组时,常常会遇到一个问题:如何在程序中定义数组大小,而不是在函数开始时预先声明一个大数组,仅使用其中的一部分。考虑下面的程序,我们需要一个大小为N(N<1000)的数组,通常我们会这么做:这样做总是感觉...

c语言数组在内存中是怎么分配的?
C语言使用的内存是虚拟内存。按照功能的不同在C语言中又将虚拟内存为分三类:栈区、堆区、静态数据区,不管是单一变量还是数组,其内存分配都是这样分的。在栈区、静态数据区、堆区会有编译器负责分配、操作系统负责管理,程序员可以在堆区使用malloc()来动态分配堆内存的问题。

C语言:都是动态分配内存,malloc和new有什么区别?malloc分配的内存是...
(int *)malloc(sizeof (int) * 10);就是连续的,相当于数组,一个个创建就不是了,new可以给数据类型分配一个新结点并返回一个指向新分配内存区的首地址. 也可以对它进行初始化.中括号中的 size 可以分配尺寸大小.

C语言可以实现为一维数组动态分配内存吗?
void main(void){ int len,i, *p;printf("输入要存放元素的个数:");scanf("%d", &len); \/\/输入长度构造动态一维数组 p = (int *)malloc(sizeof(int)*5);for(i=0; i<len; ++i)scanf("%d",(p+i)); \/\/ p+i等同于&p[i];\/\/ 将动态一维数组p的长度增加至6,并将第6个元素...

C语言中结构体数组的大小如何动态分配?
基本类型数组动态分配大小:int* a = (int*)malloc(sizeof(int)*10) ; \/\/动态分配10个大小的int类型的内存空间 结构体类型数组分配大小:struct DIYDEFINE { int a;char ch;long lnum;};DIYDEFINE* pDiy = (DIYDEFINE*)malloc(sizeof(DIYDEFINE)*10); \/\/动态分配10个大小的结构体类型DIY...

C语言中的动态内存分配的用法举例
1、malloc函数:其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针。2、free函数:由于内存区域总是有限的,不能不限制地分配下去,而且一个程序要尽量节省资源,所以当所分配的内存区域不用时,就要释放它,...

C语言里,什么时候用数组什么时候用指针和动态内存(malloc\/calloc...
数组大小确实有限制.因为局部数组是分配在栈上的,而栈大小是有限制的,如果超过限制,就会出现栈溢出.如果不能明确知道所需内存的大小,编程中这种情况非常常见.这个时候只能用动态内存.但是用动态内存容易出bug,主要是忘记忘记释放内存(内存溢出)和野指针(指针指向的地址不是malloc分配的内存地址). 另外,...

相似回答