我的程序給出了一個錯誤,如果我不包括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