MARK說XP對記憶體的保護比較不嚴格,所以就算動到了不該動的位置也不見得會立刻出事。我碰到的情況是MALLOC忽然就失敗了,而整個程式吃掉的記憶體才13MB左右,因此斷定不是LOOP+LEAK,但是由於只是配置失敗,所以程式跑起來好像沒事一樣,只不過東西出不來而已。於是我開了些除錯用的例外,果然程式在出錯的地方丟出意外,仔細檢查後才發現是BUFFER SIZE算錯。
結論:MALLOC會失敗是因為動到HEAP記錄的地方(HEAP CORRUPTION)。
struct TGA_HEADER
{
unsigned char cbIDField;
unsigned char iColorMapType;
unsigned char iImageType;
//--1 byte padding
short ofsColorMap;
short cColorMap;
unsigned char cColorMapBits;
//--1 byte padding
short dX;
short dY;
short dWidth;
short dHeight;
unsigned char dColorDepth;
unsigned char descImage;
};
#include
struct TGA_HEADER
{....};
#include