动态内存管理易错点+分析例题

复习一下:

动态内存管理易错点+分析例题_第1张图片

 常见的错误:

1.可能返回的是空指针

动态内存管理易错点+分析例题_第2张图片

2.对动态开辟的内存越界访问

动态内存管理易错点+分析例题_第3张图片

3.非动态开辟内存却用free释放

动态内存管理易错点+分析例题_第4张图片

4.使用free释放动态开辟内存的一部分

动态内存管理易错点+分析例题_第5张图片

5.free多次释放

动态内存管理易错点+分析例题_第6张图片

如果加了p=NULL的话

free(p)相当于啥也不干 程序起码不会崩掉

6.动态开辟内存忘记释放(内存泄漏)——>只申请不释放

动态内存管理易错点+分析例题_第7张图片


对几道经典例题的分析

1.

动态内存管理易错点+分析例题_第8张图片

1.1p与str的区别

1.2没有free

 那怎么改呢?

动态内存管理易错点+分析例题_第9张图片

动态内存管理易错点+分析例题_第10张图片

2.返回栈空间地址的问题

动态内存管理易错点+分析例题_第11张图片

 下面是正确的:

动态内存管理易错点+分析例题_第12张图片

但是区别一下,右边这个就不对了

动态内存管理易错点+分析例题_第13张图片 

 值可能会被改掉的(函数栈帧)

动态内存管理易错点+分析例题_第14张图片

 3.内存泄漏问题

动态内存管理易错点+分析例题_第15张图片

4.非法访问

动态内存管理易错点+分析例题_第16张图片 

 

你可能感兴趣的:(c++,c语言)