1. 程式人生 > >關於User breakpoint called from code at 0x77f9193c的問題

關於User breakpoint called from code at 0x77f9193c的問題

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的問題