请教:
是这样的,我的程序(mygame.exe)运行几个小时后会自动退出
今天,我在 debug 模式下让它运行(VS2003)
几个小时后,弹出了:Debug Aseertion Failed
Program: d:\xgw\mygame\debug\mygame.exe
file:dbgdel.cpp
line:52
Expression:_BLOCK_TYPES_IS_VALID(pHead->nBlockUse)
是:
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\crt\src的 dbgdel.cpp 的 /* verify block type */
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
各位大哥,为什么会出现这样的错误啊?
Game_Play.hstruct SongAnimalFall   //动物下调的结构
{
   float FallStartTime;      //
   float FallEndTime;        //
   int   AnimalColour;       //
   bool  GreenString;        //
   bool  FallCompleteFlag;   //
}; 
class Game_Play
{
  public:
         Game_Play();
         SongAnimalFall* SongAnimalSjzqmFall;         
         SongAnimalFall* SongAnimalSrklFall;      
       SongAnimalFall* SongAnimalHlsdFall;     
};   
Game_Play.cpp
Game_Play::Game_Play()
{
   SongAnimalSjzqmFall = NULL;        
   SongAnimalSrklFall = NULL;        
   SongAnimalHlsdFall = NULL;      
}
Sjzqm.cpp
Sjzqm_Create()
{
    SongAnimalSjzqmFall = new SongAnimalFall[219];  //开辟 219 个 SongAnimalFall 大小空间
  
  SongAnimalSjzqmFall[0].FallStartTime = 0.0f;           
    SongAnimalSjzqmFall[0].FallEndTime = 2.033f;          
    SongAnimalSjzqmFall[0].AnimalColour = 2;              
    SongAnimalSjzqmFall[0].GreenString = true;             
    SongAnimalSjzqmFall[0].FallCompleteFlag = false;      
    
    
    SongAnimalSjzqmFall[1].FallStartTime = 1.000f;        
    SongAnimalSjzqmFall[1].FallEndTime = 3.033f;           
    SongAnimalSjzqmFall[1].AnimalColour = 2;              
    SongAnimalSjzqmFall[1].GreenString = false;           
    SongAnimalSjzqmFall[1].FallCompleteFlag = false;  
    
    ...............................................
    ..............................................
    ...............................................    
}Sjzqm_Free()
{
  if (SongAnimalSjzqmFall)
 {
   delete[] SongAnimalSjzqmFall;
   SongAnimalSjzqmFall = NULL;
 }
}
Srkl.cpp
Srkl_Create()
{
    SongAnimalSrklFall = new SongAnimalFall[100];  //开辟 100 个 SongAnimalFall 大小空间
  
  SongAnimalSrklFall[0].FallStartTime = 0.0f;           
    SongAnimalSrklFall[0].FallEndTime = 2.033f;          
    SongAnimalSrklFall[0].AnimalColour = 2;              
    SongAnimalSrklFall[0].GreenString = true;             
    SongAnimalSrklFall[0].FallCompleteFlag = false;      
    
    
    SongAnimalSrklFall[1].FallStartTime = 1.000f;        
    SongAnimalSrklFall[1].FallEndTime = 3.033f;           
    SongAnimalSrklFall[1].AnimalColour = 2;              
    SongAnimalSrklFall[1].GreenString = false;           
    SongAnimalSrklFall[1].FallCompleteFlag = false;  
    
    ...............................................
    ..............................................
    ...............................................    
}Sjzqm_Free()
{
  if (SongAnimalSrklFall)
 {
   delete[] SongAnimalSrklFall;
   SongAnimalSrklFall = NULL;
 }
}
Hlsd.cpp
Hlsd_Create()
{
    SongAnimalHlsdFall = new SongAnimalFall[150];  //开辟 150 个 SongAnimalFall 大小空间
  
  SongAnimalHlsdFall[0].FallStartTime = 0.0f;           
    SongAnimalHlsdFall[0].FallEndTime = 2.033f;          
    SongAnimalHlsdFall[0].AnimalColour = 2;              
    SongAnimalHlsdFall[0].GreenString = true;             
    SongAnimalHlsdFall[0].FallCompleteFlag = false;      
    
    
    SongAnimalHlsdFall[1].FallStartTime = 1.000f;        
    SongAnimalHlsdFall[1].FallEndTime = 3.033f;           
    SongAnimalHlsdFall[1].AnimalColour = 2;              
    SongAnimalHlsdFall[1].GreenString = false;           
    SongAnimalHlsdFall[1].FallCompleteFlag = false;  
    
    ...............................................
    ..............................................
    ...............................................    
}Sjzqm_Free()
{
  if (SongAnimalHlsdFall)
 {
   delete[] SongAnimalHlsdFall;
   SongAnimalHlsdFall = NULL;
 }
}
各位大哥,我这样释放错了,是吗?for(i = 0; i < 219; i ++)
{
 if (SongAnimalSjzqmFall[i])
 {
   delete[] SongAnimalSjzqmFall[i];
   SongAnimalSjzqmFall[i] = NULL;
 }
}
for(i = 0; i < 100; i ++)
{
 if (SongAnimalSrklFall[i])
 {
   delete[] SongAnimalSrklFall[i];
   SongAnimalSrklFall[i] = NULL;
 }
}
for(i = 0; i < 150; i ++)
{
 if (SongAnimalHlsdFall[i])
 {
   delete[] SongAnimalHlsdFall[i];
   SongAnimalHlsdFall[i] = NULL;
 }
}要这样写,是不?
还是我错在别的地方?谢谢!