- 1
- 0
- 约1.47万字
- 约 19页
- 2026-09-13 发布于北京
- 举报
改错题
p=malloc(sizeof(int)*10);q=malloc(sizeof(int)*20);
p=q;free(p);free(q);
Free(q)错了,因为p=q后,就指向同一块地址了。内存泄露(p分配了空间没释放)
==============我的
一:由于malloc函数返回值为void*,所以还是应该强制转换为(int*),虽然我在运行时没有错,但一般都要指定指针类型。
二:由于p=q,两个指针指向同一个地址,free(p)之后,则该内存空间被释放,则q此时就没有具体指向一个地址,free(q)就会出错。
一般我们常说的内存泄露是指堆内存泄露,堆内存是指程序从对中分配的,大小任意的(内存块的大小可以再程序运行期确定),使用完后必须先释放内存。
和去年一样voidswap(char*a,char*b)
{char*temp;*temp=*a;*a=*b;*b=*temp;}
函数类型大小写错误。
2.交换形参指针地址不能修改实参的值。
正确修改法:见下
(解释)实参是str1和str2的地址,函数里改变了*p,*q的值,也就是str1和str2中存放的字符串的地址做了改变。所以str1里存放的str2所指字符串的地址
for(num=N;arr[num]!=item;num--);
printf(%d,num)
原创力文档

文档评论(0)