标签:运行 开头 rom input logs matrix user define inpu
今日在运行如下程序时出现以上问题:
#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的问题
标签:运行 开头 rom input logs matrix user define inpu
原文地址:http://www.cnblogs.com/2Bthebest1/p/7103708.html