轻松入门 实战应用 技术交流群387220290
各区元素分析
1.4函数调用模型 1.4.1基本原理
轻松入门 实战应用 技术交流群387220290
1.4.2内存四区模型和函数调用模型变量传递分析
1、一个主程序有n函数组成,c++编译器会建立有几个堆区?有几个栈区?
2、函数嵌套调用时,实参地址传给形参后,C++编译器如何管理变量的生命周期? 分析:函数A,调用函数B,通过参数传递的变量(内存空间能用吗?)
轻松入门 实战应用 技术交流群387220290
1.4.3提示学好C语言的关键
1.4.4如何建立正确的程序运行内存布局图
? 内存四区模型&函数调用模型 ? 函数内元素
? 深入理解数据类型和变量“内存”属性 ? 一级指针内存布局图(int *,char*) ? 二级指针内存布局图(int ** char **) ? 函数间
? 主调函数分配内存,还是被调用函数分配内存
? 主调函数如何使用被调用函数分配的内存(技术关键点:指针做函数参数)
======》学习指针的技术路线图
1.5内存四区强化训练
01全局区训练
? char *p1= “abcdefg”; 02 堆栈区生命周期训练 ? Char p1[]= “abcdefg”; ? 返回基本类型
轻松入门 实战应用 技术交流群387220290
? 返回非基本类型 03堆栈属性训练
? 测试heap生长方向 ? 测试stack生长方向
? Heap、stack生长方向和内存存放方向是两个不同概念 ? 野指针
? Malloc得到指针释放问题测试
? free(p)
? free(p+1),深入理解
1.6作业强化 训练1划出内存四区
void main26() { char buf[100]; //byte b1 = new byte[100]; 轻松入门 实战应用 技术交流群387220290
} int a = 10; //分配4个字节的内存 栈区也叫临时区 int *p;//分配4个字节的内存 p = &a; //cpu执行的代码,放在代码区 *p = 20; // { } system(\ char *p = NULL; //分配4个字节的内存 栈区也叫临时区 p = (char *)malloc(100); //内存泄露概念 if (p != NULL) { } free(p); 全局区代码测试 char * getstring1() { } char * getstring2() { char *p2 = \ return p2; char *p1 = \ return p1;