如果我不包含HeapAlloc,我的程序将给出错误消息。
int iIndex=0;
enum EDataType
{
kINT,
kFLOAT,
kUINT
};
typedef struct logstr
{
EDataType sData_Type;
string sComment;
bool bStatus;
float fDump_Value;
int iDump_Value;
UINT32 uDump_Value;
}slog,*StrLog;
Str_Dump[iIndex]->sData_Type=EDataType(0);//i get a error on this line exception0xC0000005: Access violation writing in location0X00000;
但是当我加入一行
Str_Dump[iIndex]=(StrLog)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sizeof(slog));
然后再次运行该程序即可成功运行。
那条线到底在做什么?我不明白。
我已经声明strdump为
StrLog Str_Dump[100];
最佳答案
第二行为Str_Dump[iIndex]
分配内存。 HeapAlloc
和GetProcessHeap
是WinApi方法,您可以在MSDN网站上找到它们的文档。
第一行崩溃是因为您正在访问未分配的指针Str_Dump[iIndex]
。
关于c++ - 0xC0000005:在位置写入访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10123344/