首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

0x77c815de 处未处理的错误: 0xC0000005: 写入位置 0x00000000 时发生访问冲突

2012-05-10 
0x77c815de 处未处理的异常: 0xC0000005: 写入位置 0x00000000 时发生访问冲突代码是这样的:char*elem[100

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;} 

热点排行