zoukankan      html  css  js  c++  java
  • C++之函数参数中带有class的情况会重复释放类资源、导致段错误发生

    我的C++的一个类,要在另一个函数中使用到,原来按照一般的数据类型传递参数,比如:

    #include <iostream>
    #include <unistd.h>
    #include <string.h>
    #include <stdlib.h>
    #include <stdio.h>

    using namespace std;

    class CClass{
    public:
    CClass(){
    std::cout<<"String CClass"<<std::endl;
    }
    ~CClass(){
    std::cout<<"Ending CClass"<<std::endl;
    }
    };

    CClass CLS;

    void func(CClass cls){
    return ;
    }

    int main(int argc,char **argv){
    func(CLS);
    return 0;
    }


    结果居然就是:

    ayanmw@ayanmw-desktop:~$ g++ classInFunction.cpp 
    ayanmw@ayanmw-desktop:~$ ./a.out
    String CClass
    Ending CClass
    Ending CClass


    着实 让我郁闷了一下!!!函数内部传递的一个类,居然 在这个函数内部给释放掉了。。。

    如果类里面有一些 指针,end的时候有free or delete的操作,那么结果就是: 段错误

    这种问题 我不知道如何处理,只能避免 在函数参数中使用类了。

    转载请注明出处:http://www.cnblogs.com/ayanmw 多谢

    ------------------------------------------------------------------------------------------------

    一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。

  • 相关阅读:
    ASP.NET结合COM组件发送Email
    木马生成技术
    AJAX中使用Session
    对象模型文档对象模型DOM简介
    何遍历数据源中的表名称
    AJAX.NET用户开发指南
    用ASP.NET上传大文件
    .net反编译利器
    Equals和GetHashcode
    Factory Method模式
  • 原文地址:https://www.cnblogs.com/ayanmw/p/2413695.html
Copyright © 2011-2022 走看看