如果我不包含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]分配内存。 HeapAllocGetProcessHeap是WinApi方法,您可以在MSDN网站上找到它们的文档。

第一行崩溃是因为您正在访问未分配的指针Str_Dump[iIndex]

关于c++ - 0xC0000005:在位置写入访问冲突,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10123344/

10-11 15:16