在DEBUG 模式下,MFC 重载了new 运算符,并且是两个,一个是全局,一个针对COBJECT 的派生类对象。其中每次分配内存时,都额外的分配了一个结构大小在实际需要的内存区前面,同时在该结构和实际内存之间以及实际内存的最后也分配了额外的空间,用于检查程序是否进行了错误的越界写,以便在调试模式下给用户警告。
而有意思的当然是那个结构,里面保存了所分配内存的所有信息,大小拉,是否COBJECT 派生类对象拉,等等拉,由于对每次分配都进行了跟踪,那么内存诊断就相对容易拉,只要在两个点之间进行一次内存分配信息打包(统计)。然后进行比较。 不过该结构还有一个域用来判断内存是否空闲,主要是用来延迟释放。因为我们想知道程序总共分配的内存大小,就需要延迟释放来实现。 ……
而这种分配以及描述内存的方法在 CStiring 类中也使用了。 原来如此~ HOHO