首页 > 代码库 > 关于User breakpoint called from code at 0x77f9193c的问题

关于User breakpoint called from code at 0x77f9193c的问题

今日在运行如下程序时出现以上问题:

#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的问题