| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 682 人关注过本帖
标题:这个问题有点纠结
取消只看楼主 加入收藏
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
结帖率:66.67%
收藏
 问题点数:0 回复次数:3 
这个问题有点纠结
请问哪种函数在主函数结束后回被调用?
有静态对象的析构函数,还有哪些呀?
2011-12-08 12:46
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
回复 2楼 cosam
这个也是在主函数结束后调用吗?请问调用几次?因为我写了一个程序,似乎在VC下主函数结束后调用了三次?

#include<iostream.h>
#include<malloc.h>
#include<new.h>
#include<stdio.h>

#include "tt.h"
void *operator new(size_t sz,const char *file,const int line)
{
    cout<<sz<<"  "<<file<<" "<<line<<endl;
    return malloc(sz);
}
void operator delete(void *p)
{
    printf("free \n");
    printf("%x\n",p);
    char s=*(char*)p;
    printf("%d,%c\n",s,s);
    free(p);//???
}
#define new new(__FILE__,__LINE__)

void main()
{
    Test *p=new Test();

        delete p;
   
}


就这个函数,总共调用了三次delete,为什么
2011-12-09 20:57
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
回复 楼主 lonely_21
那就笼统的回答呀
2011-12-09 20:57
lonely_21
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:108
专家分:395
注 册:2011-11-13
收藏
得分:0 
回复 6楼 飞扬_佳
啊啊啊,复制错了,
class Test
{
public:
    Test()
    {
        cout<<"Create Test: "<<this<<endl;
    }
    ~Test()
    {
        cout<<"Destroy Test: "<<this<<endl;
    }
};
就这样,这个问题今天解决了,是因为在调用exit()结束主函数时,可能在头文件中包含的有对象,所以要调用delete去析构,析构的时候调用了自定义的delete,所以才会显示有那样的结果,谢谢啦
2011-12-10 23:43
快速回复:这个问题有点纠结
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.038818 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved