动态内存函数开辟的经典的笔试题

一:常见的动态内存错误  

1 NULL指针的解引用操作

2 对动态开辟空间的越界访问

 3 对非动态开辟内存使用free释放

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

!: p的移动,导致了free的时候,不能够完全释放掉malloc开辟的全部内存

5 对同一块动态内存多次释放

6 动态开辟内存忘记释放(内存泄漏)

!: 动态开辟内存忘记释放(内存泄漏)(一般是在某个函数中进行开辟,然后回到主函数,无法使用开辟的空间,导致泄露)(动态申请的内存空间,不会出了作用域就自动销毁(还给操作系统),只有free,或退出程序才能还给操作系统)。

二:笔试题

第一题:

(什么都打印不出来)

1,p只是str的一份临时拷贝,无法让str改变,因为采用给的是值的传递
2,其次test里面就会对空指针进行解引用操作。
3,没有释放malloc开辟的空间,会造成内存泄露。 

改进:

!:采用址传递,才能够让str改变

第二题:

(打印出的是

1,数组的创建,出作用域会销毁这个数组的内容,str的确指向了这个数组,但是已经变成了野指针,因为指向的空间已经不属于它了。      

改进:

采用malloc函数来创建这个数组,就不会因为除了GetMemory这个函数而被销毁数组的内容 

第三题:

(能打印出hello,但是存在问题)

 忘记在test 里面 free 掉 malloc 开辟的空间了

第四题:

(只会打印出world)

free之后,此刻str已经变成了野指针了。然后又去访问了str,非法访问

改进:

free完后,应该手动置为空即可 


 


    

 

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-27 18:28:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-27 18:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-27 18:28:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-27 18:28:03       20 阅读

热门阅读

  1. 一个好用的nginx动态变量扩展模块

    2024-03-27 18:28:03       20 阅读
  2. 通信专业毕业设计-大学校园网设计

    2024-03-27 18:28:03       18 阅读
  3. Linux 升级 Python 至 3.x

    2024-03-27 18:28:03       20 阅读
  4. 访问海外服务器速度慢的原因

    2024-03-27 18:28:03       18 阅读
  5. 记录gitlab管理代码的原理和实现

    2024-03-27 18:28:03       17 阅读
  6. 【无标题】

    2024-03-27 18:28:03       16 阅读
  7. 《C++ Primer Plus》第七章课后题

    2024-03-27 18:28:03       14 阅读
  8. PHP基础教程

    2024-03-27 18:28:03       16 阅读
  9. linux磁盘存储空间不足磁盘扩容

    2024-03-27 18:28:03       17 阅读
  10. android——【封装】使用建造者方式封装一个类

    2024-03-27 18:28:03       17 阅读
  11. 游戏学(Ludology)探秘

    2024-03-27 18:28:03       15 阅读