Stack around the variable was corrupted.
So this is my code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
HRESULT CSerializer::Deserialize_CBaseMap( CBaseMap &map, CONST CHAR *filename )
{
ifstream ifs( filename, ios::binary );
if( ifs )
{
CHAR sizebuffer = '0';
INT32 size = 0, i;
vector<CBaseObject> vobj;
ifs.read( &sizebuffer, sizeof( INT32 ) );
size = atoi( &sizebuffer );
CBaseObject *oa = new CBaseObject[size];
ifs.read( (CHAR*)oa, sizeof( *oa ) );
for( i = 0; i < size; i++ )
{
vobj.push_back( oa[i] );
}
map.Objects = vobj;
return S_OK;
}
return E_FAIL;
}
| |
Strangely, it crashes after the return.
Maybe because I'm using
char
instead of
char *
for sizebuffer?
When I change sizebuffer to a
char *
, it does not read.
Any thoughts?
Last edited on
I've fixed the problem, actually.
Anyone who is wondering, this is the solution:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
HRESULT CSerializer::Deserialize_CBaseMap( CBaseMap &map, CONST CHAR *filename )
{
ifstream ifs( filename, ios::binary );
if( ifs )
{
CHAR sizebuffer[4] = { 'T', 'e', 's', 't' };
INT32 size = 0, i;
vector<CBaseObject> vobj;
ifs.read( sizebuffer, sizeof( INT32 ) );
size = atoi( sizebuffer );
CBaseObject *oa = new CBaseObject[size];
ifs.read( (CHAR*)oa, sizeof( *oa ) );
for( i = 0; i < size; i++ )
{
vobj.push_back( oa[i] );
}
map.Objects = vobj;
return S_OK;
}
return E_FAIL;
};
| |
Topic archived. No new replies allowed.