關於User breakpoint called from code at 0x77f9193c的問題
阿新 • • 發佈:2017-07-02
ase return 後來 urn r+ 需要 stdio.h put tdi
今日在運行如下程序時出現以上問題:
#include<stdio.h> #include<stdlib.h> #define N 3 int main() { int arr[N][N]={NULL}; int *p=NULL; int *ConvertFun(int(*)[N]); int i,j; printf("please input the orginal matrix:\n"); for(i=0;i<N;i++) for(j=0;j<N;j++) scanf("%d",arr[i]+j); p=ConvertFun(arr); printf("the convert matrix is:\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%d ",*p++); printf("\n"); } free(p); return 0; } int *ConvertFun(int(*p)[N]) { int* arr=(int*)malloc(N*N*sizeof(int));int i,j; for(i=0;i<N;i++) for(j=0;j<N;j++) *(arr+i*N+j)=p[j][i]; return arr; }
後來發現堆中的初始地址p由最開始移動到最末尾,free()釋放的不再是malloc空間(即存在兩個斷點,子函數arr的開頭及結尾),故需要將*p++改為*(p+i*N+j),那麽問題就得到解決。
關於User breakpoint called from code at 0x77f9193c的問題