网站首页 > 文章中心 > 其它

c语言动态内存相关函数

作者:小编 更新时间:2023-09-28 17:32:54 浏览量:88人看过

C语言动态内存分配与自定义函数实现

根据使用函数不同,作用各不相同.共同点均是动态分配一段内存,使用后需要用free函数释放.所有动态分配函数均声明在stdlib.h中.

①. malloc

void *malloc(unsigned int num_bytes);

功能

分配长度为num_bytes字节的内存块

返回值

如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL.当内存不再使用时,应使用free()函数将内存块释放.函数返回的指针一定要适当对齐,使其可以用于任何数据对象.

说明

关于该函数的原型,在以前malloc返回的是char型指针,新的ANSIC标准规定,该函数返回为void型指针,所以呢必要时要进行类型转换.

void *calloc(size_t n, size_t size);

在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL.

calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据.

void *realloc(void *mem_address, unsigned int newsize);

先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回,如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域(注意:原来指针是自动释放,不需要使用free),同时返回新分配的内存区域的首地址.即重新分配存储器块的地址.

如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL.

注意

当内存不再使用时,应使用free()函数将内存块释放.

c语言,动态存储calloc函数

calloc是一个IOS C函数

函数名: calloc

函数原型:void *calloc(size_t n, size_t size);

功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函数返回一个指向分配起始地址的指针;如果分配不成功,返回NULL.

用 法:

一般使用后要使用 free(起始地址的指针) 对内存进行释放,不然内存申请过多会影响计算机的性能,以至于得重启电脑.如果使用过后不清零,还可以使用指针对该块内存进行访问.

头文件:stdlib.h或malloc.h

相关函数:malloc、realloc、free _alloca

C语言中如何动态增加内存空间

动态增加内存空间 可以用 realloc 函数.函数原型是.

void* realloc (void* ptr, size_t size);

例如,你第一次用 malloc 函数 动态分配了空间,随着一步步运算,觉得空间不够,需要加大空间,与此同时,原先空间里的数据需保留并还要继续使用,这时需要用 realloc,它能满足此需要.

下面是完整的程序例子.告诉使用 realloc 的窍门.

#include stdio.h /* printf, scanf, puts */

#include stdlib.h /* realloc, free, exit, NULL */

int main ()

{

int input,n;

int count = 0;

int* numbers = NULL;

int* more_numbers = NULL;

do {

printf ("Enter an integer value (0 to end): ");

scanf ("%d", input);

count◆◆;

more_numbers = (int*) realloc (numbers, count * sizeof(int));

if (more_numbers!=NULL) {

numbers=more_numbers;

numbers[count-1]=input;

}

else {

free (numbers);

puts ("Error (re)allocating memory");

exit (1);

} while (input!=0);

printf ("Numbers entered: ");

for (n=0;ncount;n◆◆) printf ("%d ",numbers[n]);

return 0;

在C语言中,具有动态申请内存块功能的函数是?

给你介绍两个函数吧:

malloc函数 void * malloc(size) 动态内存分配函数,分配size字节的内存,返回的是指向该区域的指针

realloc函数 void * realloc(void * ptr ,size)重新分配内存,将ptr所指的已分配内存块的大小改为size,返回的也是指向该内存区域的指针

另外都包含在stdlib.h头文件中

楼主说的就是malloc函数了,这两个函数在数据结构中经常用到的

希望可以帮助你

C语言中的动态内存分配的用法举例

①.、malloc函数:其作用是在内存的动态存储区中分配一个长度为size的连续空间.其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针.

扩展资料:

函数运算符:

new

运算符new用于向系统申请动态存储空间,并把首地址作为运算结果,它的使用形式为:

指针变量=new 数据类型;

例如:

int *p=new int

new所建立的变量的初始值是任意的,也可在用new分配内存的同时进行初始化.使用形式为:

指针变量=new 数据类型(初始值).

delete

堆内存可按照要求进行分配,程序对内存的需求量随时会发生变化,有时程序在运行种可能会不再需要由new分配的内存空间,而且程序还未运行结束,这时就需要把先前占用的内存空间释放给堆内存,以后重新分配,供程序的其他部分使用.运算符delete用于释放new分配的内存空间,删除建立的对象,它的使用形式为:

delete?指针变量;

其中的指针变量中保存着new分配的内存的首地址.

参考资料:百度百科--动态内存分配

以上就是土嘎嘎小编为大家整理的c语言动态内存相关函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章