亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

求問,為什么使用free函數會出現越界問題,這個該怎么解決呢?

求問,為什么使用free函數會出現越界問題,這個該怎么解決呢?

米脂 2021-12-31 00:06:49
#include<stdio.h>#include<malloc.h>void main(){void delta(int n);int n;printf("please enter a num:\n");scanf("%d",&n);delta(n);}void delta(int n){int *mtrx;int i,j,no,max;max=n*n;mtrx=(int *)malloc(max+max);no=0;if(mtrx){for(i=0;i<n;i++){for(j=0;j<=i;j++){no=i*n+j;if(i*j==0||j==i) mtrx[no]=1;else mtrx[no]=mtrx[no-n]+mtrx[no-n-1];}}/*輸出楊輝三角*/for(i=0;i<n;i++){for(j=0;j<=i;j++){no=i*n+j;printf("%5d",mtrx[no]);}printf("\n");}free(mtrx);}}
查看完整描述

2 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

因為分配內存分配少了,導致后面使用越界,因此釋放內存時出問題,分配內存的語句應該這樣:
mtrx=(int *)malloc((max+max)*sizeof(int));
按你原來的方式只分配了1/4的內存。

查看完整回答
反對 回復 2022-01-04
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

用realloc吧,當然第一次用malloc

查看完整回答
反對 回復 2022-01-04
  • 2 回答
  • 0 關注
  • 308 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號