|
我是在VC的编译环境下用BoundsChecker来测试内存泄露的,今天发现了一个很奇怪的问题想问问大家:
我写了下面一段程序:
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
void main( int argc ,char *argv[] )
{
long clk = time(0);
struct tm *aa = localtime(&clk);
printf("%d:%d:%d\n",aa->tm_year+1900,aa->tm_mon+1,aa->tm_mday);
}
在正常情况下调试没有出现内存和资源泄露现象;我把工程设置在多线程编译环境(即Debug Multithreaded)下,在进行调试就发现了泄露现象,内存泄露定位在localtime的函数中,资源泄露定位在printf函数中,不明白是什么意思?
查资料发现程序在Debug Single-Threaded条件下和Debug Multithreaded条件下所用的静态链接库不一样,前者用的是LIBCD.LIB,后者用的是LIBCMTD.LIB.不知道程序在这两种情况下有什么区别?
为什么一个没有出现内存泄露而另外一个出现呢?
请高手指点,多谢! |
|