您好,欢迎来到刀刀网。
搜索
您的当前位置:首页C语言动态内存分配

C语言动态内存分配

来源:刀刀网
动态内存分配

1) calloc 2) free 3) malloc 4) realloc

calloc

原型:extern void *calloc(int num_elems, int elem_size);

用法:#include

功能:为具有num_elems个长度为elem_size元素的数组分配内存

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。

举例:

// calloc.c

#include #include

main() {

char *p;

clrscr(); // clear screen

p=(char *)calloc(100,sizeof(char)); if(p)

printf(\"Memory Allocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

free(p);

getchar(); return 0; }

free

原型:extern void free(void *p);

用法:#include

功能:释放指针p所指向的的内存空间。

说明:p所指向的内存空间必须是用calloc,malloc,realloc所分配的内存。 如果p为NULL或指向不存在的内存块则不做任何操作。

举例:

// free.c

#include #include

main() {

char *p;

clrscr(); // clear screen textmode(0x00);

p=(char *)malloc(100); if(p)

printf(\"Memory Allocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

getchar();

free(p); // release memory to reuse it

p=(char *)calloc(100,1); if(p)

printf(\"Memory Reallocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

free(p); // release memory at program end

getchar(); return 0; }

malloc

原型:extern void *malloc(unsigned int num_bytes);

用法:#include

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

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。 当内存不再使用时,应使用free()函数将内存块释放。

举例:

// malloc.c

#include #include

main() {

char *p;

clrscr(); // clear screen

p=(char *)malloc(100); if(p)

printf(\"Memory Allocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

free(p);

getchar(); return 0;

}

realloc

原型:extern void *realloc(void *mem_address, unsigned int newsize);

用法:#include

功能:改变mem_address所指内存区域的大小为newsize长度。

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

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

举例:

// realloc.c

#include #include

main() {

char *p;

clrscr(); // clear screen

p=(char *)malloc(100); if(p)

printf(\"Memory Allocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

getchar();

p=(char *)realloc(p,256); if(p)

printf(\"Memory Reallocated at: %x\ else

printf(\"Not Enough Memory!\\n\");

free(p);

getchar(); return 0; }

想要此文件的chm 格式者,请联系本人: QQ:738803398

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务