0
点赞
收藏
分享

微信扫一扫

动态内存管理 C语言从入门到入土(进阶篇)

目录

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

4.2 题目2

4.3 题目3

4.4 题目4

5. C/C++程序的内存开辟

6. 柔性数组

6.1 柔性数组的特点

6.2 柔性数组的使用

6.3 柔性数组的优势


1. 为什么存在动态内存分配

2. 动态内存函数的介绍

2.1 mallocfree

举个例子:

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 的实现有两个好处:

第一个好处是:方便内存释放

第二个好处是:这样有利于访问速度.

举报

相关推荐

0 条评论