目录
1. 为什么存在动态内存分配
2. 动态内存函数的介绍
2.1 malloc和free
举个例子:
2.2 calloc
举个例子:
2.3 realloc
3. 常见的动态内存错误
3.1 对NULL指针的解引用操作
3.2 对动态开辟空间的越界访问
3.3 对非动态开辟内存使用free释放
3.4 使用free释放一块动态开辟内存的一部分
3.5 对同一块动态内存多次释放
3.6 动态开辟内存忘记释放(内存泄漏)
忘记释放不再使用的动态开辟的空间会造成内存泄漏。
4. 几个经典的笔试题
4.1 题目1:
请问运行Test 函数会有什么样的结果?
4.2 题目2:
请问运行Test 函数会有什么样的结果?
4.3 题目3:
请问运行Test 函数会有什么样的结果?
4.4 题目4:
请问运行Test 函数会有什么样的结果?
5. C/C++程序的内存开辟
6. 柔性数组
例如:
有些编译器会报错无法编译可以改成:
6.1 柔性数组的特点:
例如:
6.2 柔性数组的使用
6.3 柔性数组的优势
上述的 type_a 结构也可以设计为:
上述 代码1 和 代码2 可以完成同样的功能,但是 方法1 的实现有两个好处:
第一个好处是:方便内存释放
第二个好处是:这样有利于访问速度.