0x77c815de 处未处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突
代码是这样的:
char*elem[100][28];
memset(elem,0,100*28);
for(int i=1;i<28;i++) *elem[0][i]='A'+i-1;
for(int j=1;j<=100;j++) *elem[j][0]=j;
[解决办法]
这个题里的指针数组不需要分配空间,这个数组就是用来存储char型指针的,问题还是在*elem[0][i]='A'+i-1,在内存地址为0处,无法存放一个值,因此导致异常。
顺便写了下面两条语句:
1.指针数组没有分配空间
2.执行完后,p的值为b
char*elem[100][28];
char p='a';
elem[10][10] = (&p);
*elem[10][10]='b';
[解决办法]
elem[i][j]=new string;
[解决办法]
楼主,你的题目相当难。
- C/C++ code
#include<stdafx.h>#include<afx.h>#include<memory.h>int main(){int i,j; char* elem[100][28];memset(elem,0,100*28); char *p; for (j=0;j<100;j++) { for(i=0;i<28;i++) { CString str1; str1.Format("%d", 'A'+i); str1 += "这道题难度系数5.0,建议楼主重新梳理需求"; // 这里使用你的字符串 p = new char[str1.GetLength()+1]; strcpy(p, str1); elem[j][i]=p; } } for (j=0;j<100;j++) { for(i=0;i<28;i++) { *elem[j][i]='*'; //每个字符串的第一个字母改为*号 CString str1=elem[j][i]; CString str2; str2.Format("j=%d--i=%d",j,i); str1 += str2; OutputDebugString(str1); OutputDebugString("\n"); } } for (j=0;j<100;j++) { for(i=0;i<28;i++) { delete elem[j][i]; //必须的 } } return 0;}