C语言深度剖析笔记(七)
2016-10-26 10:42
204 查看
2016.9.7 DAGE
学习内容:C语言深度剖析笔记(七)
静态区:保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。
堆:由 malloc 系列函数或 new 操作符分配的内存。其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。
2.指针指向的内存分配:
// 结构体里面含有指针变量的,如果给这个指针变量赋值,将一段字符串或其他往里面拷贝,那么会由于
指针变量未初始化,未分配空间而导致拷贝出错,应使用malloc分配空间。
并且不仅仅要给结构体分配空间,还要给里面的指针变量分配空间。 –可能不对
//
char *p = NULL;
为这个指针变量p分配空间时,需要p = (char *)malloc(sizeof(char)*4);
ps:关于数组元素的初始化:
int a[10] = {};等同于int a[10] = {0};将数组里面的所有数据都置为0
int a[10] = {5,1};将前面两个数据置为5和1,后面的置为0
学习内容:C语言深度剖析笔记(七)
a.内存管理
1.栈、堆、静态区:静态区:保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。
栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。
堆:由 malloc 系列函数或 new 操作符分配的内存。其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束。其特点是使用灵活,空间比较大,但容易出错。
2.指针指向的内存分配:
// 结构体里面含有指针变量的,如果给这个指针变量赋值,将一段字符串或其他往里面拷贝,那么会由于
指针变量未初始化,未分配空间而导致拷贝出错,应使用malloc分配空间。
并且不仅仅要给结构体分配空间,还要给里面的指针变量分配空间。 –可能不对
//
char *p = NULL;
为这个指针变量p分配空间时,需要p = (char *)malloc(sizeof(char)*4);
ps:关于数组元素的初始化:
int a[10] = {};等同于int a[10] = {0};将数组里面的所有数据都置为0
int a[10] = {5,1};将前面两个数据置为5和1,后面的置为0
相关文章推荐
- C语言深度剖析笔记(1)
- 《C语言深度剖析》学习笔记----C语言中的符号
- C语言深度剖析——个人笔记
- C语言深度剖析学习笔记-指针、数组、内存、函数
- 一无所有:阅读陈正冲《C语言深度剖析 第二版》笔记 1(声明)
- C语言深度剖析学习笔记-符号
- c语言深度剖析笔记4
- C语言深度剖析--读书笔记1_定义和声明
- C语言深度剖析笔记(2)
- C语言深度剖析笔记(六)
- C语言深度剖析笔记(指针和数组)
- 20110907C语言深度剖析笔记
- c语言深度剖析笔记5
- c语言深度剖析之学习笔记(二)------------符号
- <<C语言深度剖析>>学习笔记之一:C语言中32个关键字
- C语言深度剖析学习笔记
- [学习笔记]C语言深度剖析
- C语言深度剖析学习笔记-预处理
- 读c语言深度剖析 -- 单引号与双引号、逻辑运算符、位运算符、花括号
- 读c语言深度剖析 -- 闲谈const(3)