HeapAlloc을 포함하지 않으면 내 프로그램에서 오류가 발생합니다. 정확히 이해할 수 없습니다.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));
그런 다음 프로그램을 다시 실행
이 성공적으로 실행됩니다.정확히 그 행은 무엇입니까? 내가 이해할 수없는.
I 번째 라인 Str_Dump[iIndex]
메모리를 할당
StrLog Str_Dump[100];
Str_Dump에 공간을 할당 했습니까? 이 코드가 완료되면이 코드에서 불분명합니다. – PeskyGnat
@PeskyGnat strdump 선언은 StrLog Str_Dump [100]과 유사합니다. – hardyz009
@ hardyz009 그렇습니다. 그러나'StrLog'는 포인터이므로 포인터 배열 만 있습니다. 포인터를 가리 키도록 메모리를 할당하고 포인터를 초기화해야합니다. (또는 slog에 대한 포인터 대신에'slog'의 배열을 선언 할 수 있습니다. 또한 이와 같이 typedef는'StrLog'가 포인터라는 사실을 숨기고 대부분의 경우 피해야합니다) – nos