C_language_renew06

内存管理

  • 程序:经源码编译后的可执行文件。
  • 进程:程序加载到内存后开始执行至执行结束的这样一段时间概念。
  • 进程空间图
    stack 栈存储 容量比较小经常造成溢出
    heap 堆存储 无限大受实际内存的大小和内存是否连续性。

void *malloc(size_t_Size)
if(NULL == p) //常量不可以赋值
{}
  
一般用
void  *memset(void *buffer,int ch,size_t count);
memset (arr,0,40); 初始化malloc;

申请堆内存空间并返回,所申请的空间,自动清零。
 void *calloc(size_t nmemb,size_t size);
  void *realloc(void *ptr,size_t size);

切记 realloc()只能扩容,不能缩小空间
realloc  newPtr ptr 有可能相等,也有可能不相等,只使用realloc的返回指针。

堆内存的特点总结:
1、自申请,自释放
2、返回判空
    free(p)   p = NULL;
    //记得将释放的指针置为NULL 
3、配对使用

你可能感兴趣的:(C_language_renew06)