2014电子科大复试C.docxVIP

  • 0
  • 0
  • 约1.97万字
  • 约 26页
  • 2026-09-15 发布于北京
  • 举报

2014C语言程序设计-笔试

总体感觉:和去年的题有重复,时间紧,所以大家还是要好好准备,

一、指出程序中的错误,说明原因并修正。

1、

Int*p,*q;

p=(int*)malloc(sizeof(int)*20);

q=(int*)malloc(sizeof(int)*10);

q=p;//修改的话可以删除这句话

free(p);

free(q);//错了,因为p=q后,就指向同一块地址了。内存泄露(p分配了空间没释放)重复释放同一内存会报错,还剩一块内存没有释放,内存泄露

一:由于malloc函数返回值为void*,所以还是应该强制转换为(int*),虽然我在运行时没有错,但一般都要指定指针类型。

二:由于p=q,两个指针指向同一个地址,free(p)之后,则该内存空间被释放,则q此时就没有具体指向一个地址,free(q)就会出错。

内存泄露:

一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显式释放的内存。应用程序一般使用malloc,calloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

内存泄漏是常见的问题。当以前分配的一片内存不

文档评论(0)

1亿VIP精品文档

相关文档