高质量C编程03-内存
来源:互联网 发布:mysql 备份 自动 编辑:程序博客网 时间:2024/05/21 09:23
传送门《高质量C编程教程汇总》
1.程序设计本质
- 所谓程序就是由实现算法的语句来操纵存放在计算机的内存中的数据.
- 程序设计就是对内存直接或间接地使用.
- 内存的分配和活动是编程者的第一要务
2.内存划分(4个区域)
(1)代码区:
存放程序所有执行代码和常量,只读不可写.
(2)栈区(stack)
存放程序的局部变量和形参
①系统按栈原则管理:
进栈退栈-先进后出
②函数执行完则释放
③用户无法干预变量的诞生和消亡
(3)堆区(heap)
①长命
②无名
③用户干预变量的诞生和消亡
④在程序运行时动态分配内存
⑤申请可能失败(编程时需要判断)
if (Null == p){ printf("Memory create Fail!\n"); return 1;}
(4)静态区(static)
存放程序的全局变量和静态变量
①不按栈原理管理
②长命
③生命周期:全程序
④不初始化时默认为0
3.堆空间的使用
(1)C中动态分配内存的函数
//申请堆内存malloc();calloc();//释放内存free();
使用这3个函数必须包含头文件stdlib.h
(2)malloc()
void * malloc(unsigned size);
(3)calloc()
void * calloc(unsigned n,unsigned size);
(4)free()
void free(void *p);
注意:
- 传入指向堆内存空间的首地址,释放的是整个块,而不是指向该块的指针类型的大小.
- 释放完后一般使
p=NULL;
(5)使用堆空间的注意事项
①申请不一定成功,使用前判断
②用完后空间要释放,只能释放申请时的初地址p(前4个字节存放开辟内存长度等信息)
③指针要置NULL
交还malloc申请空间的使用权给系统
4.-mize(p)可以取得动态内存长度(malloc.h)
0 0
- 高质量C编程03-内存
- 高质量C++/C编程指南 -- 内存管理之一
- 高质量C++/C编程指南 -- 内存管理之二
- 高质量 C++/C 编程指南 林锐 摘要 内存管理
- 内存管理:高质量C++/C编程指南
- 《高质量C/C++编程》学习笔记3(内存)
- 第七章 高质量C编程规范内存管理
- 高质量编程内存管理
- 高质量编程--内存管理
- 高质量编程内存管理
- 内存管理 -- 高质量编程
- <高质量C>内存管理
- 高质量C编程指南
- 高质量c/c++编程
- 高质量c c++编程
- 高质量编程C/C++
- 读书笔记---高质量C编程
- 高质量C\C++编程
- Docker题外话
- String——反转单词顺序VS左旋字符串
- HDU 2311-Nim or not Nim?(Nim博弈-打sg表找规律)
- web前端给你带来什么
- Spark学习笔记:初识Spark
- 高质量C编程03-内存
- CetOs6.5下 jsoncpp安装 NCURSES的安装
- enable_if
- 第十二周上机实践项目-阅读程序-1-(3)
- 卷积神经网络
- 柴俊理金:5月12号现货黄金,宁贵沥青操作建议
- hibernate tools 中 jdbc-type 与 hibernate-type 对照表
- maven ssm处理错误
- Android Studio解决org.apache.http.legacy找不到的问题