51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1995|回复: 0
打印 上一主题 下一主题

VC中内存泄露的一个奇怪现象????

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-5-10 10:53:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是在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.不知道程序在这两种情况下有什么区别?

为什么一个没有出现内存泄露而另外一个出现呢?

请高手指点,多谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 16:46 , Processed in 0.069816 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表