c语言学习笔记.内存管理.

内存:

  每个程序的内存是分区的:堆区、栈区、静态区、代码区。

  1.代码区:放置所有的可执行代码,包括main函数。

  2.静态区:存放所有的全局变量静态变量

  3.栈区:栈(stack),先进后出。存储所有的自动变量、函数形参

  4.堆区:堆(heap)和栈一样,程序运行过程中可以随时修改的内存区域。

动态(堆)内存管理:

  C 语言为内存的分配和管理提供了几个函数。这些函数可以在 <stdlib.h> 头文件中找到。

void *calloc(int num, int size);/*分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0 */
void free(void *address); /*释放 address 所指向的内存块*/
void *malloc(int num); /*区分配一块指定大小的内存空间,用来存放数据*/
void *realloc(void *address, int newsize); /*重新分配内存,把内存扩展到 newsize*/

  内存动态分配、调整与释放:

char *p = (char *)malloc(sizeof(char) * 30);//在堆中申请了30个char大小内存
p = realloc( p, sizeof(char) * 100);//调整p为100个char大小的内存
free(p);//释放申请的堆内存,p不可改变

   

原文地址:https://www.cnblogs.com/protogenoi/p/9014176.html