我的程序给出了一个错误,如果我不包括HeapAlloc.What究竟发生了什么,我无法理解。0xC0000005:访问冲突在写作
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分配空间?从代码中不清楚这是否正在执行 – PeskyGnat 2012-04-12 12:16:52
@PeskyGnat strdump声明就像StrLog Str_Dump [100]; – hardyz009 2012-04-12 12:35:54
@ hardyz009是的,但'StrLog'是一个指针,所以你只有一个指针数组。您必须分配内存并初始化这些指针,以便指向某些内容。 (或者,你可以声明一个'slog'数组而不是指向'slog'的指针,同样,typedef'ing这样就隐藏了'StrLog'是一个指针的事实,在大多数情况下应该避免) – nos 2012-04-12 12:52:09