构造函数中慎用memset
写了一个小程序,工作时会跑一个大循环,在运行时发现有严重的内存泄露,内存不停增长。
经过几次复查,终于找出问题所在,代码结构大概如下:
struct myobj
{
myobj()
{
memset(this,0,sizeof(myobj));
}
int n;
//...其他成员
string s;
}
定义了一个结构体,有众多类型成员,想初始化成员但又懒得一一赋值,所以在构造函数使用了memset函数。
问题就出在这里,该函数同样清空了所有string成员的内存空间,影响了该对象的析构,从而导致内存泄露。
所以当对象有复杂类型成员时,构造函数中不要使用memset初始化,有指针成员时要谨慎使用!
构造函数中慎用memset相关推荐
- C++对象模型4——多重继承的对象内存模型、vptr与vtbl的创建与重置的时机、不要在含有虚函数的类的构造函数中调用memset
一.多重继承的对象内存模型 class Base1 { public:virtual void f() {cout << "base1::f()" << e ...
- 为什么super()和this()调用语句不能同时在一个构造函数中出现的解释
我想这应该是Java构造函数的一种机制吧,首先以子类和父类为例. 当你创建一个子类的实例时,首先会调用父类的构造函数,然后再调用子类的构造函数,如果父类中没有缺省构造函数,则必须再子类的构造函数中显示 ...
- this调用语句必须是构造函数中的第一个可执行语句_谈谈JavaScript中的函数构造式和new关键字...
您是否曾困惑于 Javascript 中的new关键字呢?是否曾想理解关于 function 和 constructor 的区别是什么呢? 大多数 Javascript 的新开发者不太想要使用new关 ...
- 使用原型相对于直接在构造函数中定义方法的优势? [重复]
本文翻译自:Advantages of using prototype, vs defining methods straight in the constructor? [duplicate] Th ...
- 构造函数中的虚拟成员调用
我从ReSharper得到警告,关于从对象构造函数调用虚拟成员的信息. 为什么这不是要做的事情? #1楼 因为在构造函数完成执行之前,对象没有完全实例化. 虚函数引用的任何成员都不得初始化. 在C + ...
- C++在构造函数中调用构造函数
为什么80%的码农都做不了架构师?>>> C++如何在一个构造函数中调用另一个构造函数,在一篇博文中看到了这样的一道题: #include <stdlib.h> # ...
- 第7集 构造函数中抛出的异常
上一篇文章简单讨论了一下对象的成员函数抛出异常时的处理情况.本文中将继续讨论当在构造函数中抛出异常时,程序的执行情况又如何?这有点复杂呀!而且主人公阿愚还觉得这蛮有点意思! 构造函数中抛出的异常 1. ...
- 构造函数中不应调用虚函数
今天调试程序,遇到一个很费解的问题,现在做个记录: class CS3Adapter : public CBaseAdapter 类CS3Adapter继承于CBaseAdapter,其中 CBase ...
- 【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )
文章目录 一.Groovy 构造函数中为成员赋值 二.Groovy 函数的参数传递与键值对参数 三.完整代码示例 一.Groovy 构造函数中为成员赋值 Groovy 类没有定义构造函数 , 但是可以 ...
最新文章
- 《预训练周刊》第12期:无注意力变换器、借蛋白质语言模型论进化速度
- 图说机房空气焓湿处理过程
- Bug总结:python语言中出现的import error错误的解决思路
- 长春理工大学第十四届程序设计竞赛(重现赛)F.Successione di Fixoracci
- linux 访问Windows 共享文件的方法
- Idea-Plugin编写Android Studio插件
- 攻击防御实例——SQL注入
- Detours 劫持
- 西藏:失落的旅游天堂?
- python+pillow不规则图片合成合并
- reached end of file while parsing
- 下载喜马拉雅FM的音频
- 三星30pin引脚_led屏接口定义20PIN-30PIN
- 02pysal距离权重矩阵
- 使用USBWriter做U盘启动盘后U盘在盘中不显示的解决办法(轉載)
- EN 12259-3喷水灭火系统干式报警阀组件—CE认证
- windows2016 达梦8数据库实例初始化和卸载
- javaScript求0-100之间的偶数和与奇数和
- 专访张泽华:细微中发现问题 源头上解决问题
- 远程和Ubuntu服务器进行Socket通信,使用python和C#(准备篇)
热门文章
- office文件转换为pdf文件
- matlab画图窗口显示中文乱码,全是方框的解决方法
- 高仿QQ源码 界面(3)
- jQuery学习(菜鸟教程)
- [前端之旅] - 01 开端 (持续更新各种资料)(夜·猫之使徒·哮喘征服者·被光选中的人·逐梦)
- 多线程面试题_线程魔术技巧:使用Java线程可以做的5件事
- 第二十六篇 request模块使用
- PSRAM/SRAM与XMC硬件连接的推荐方法
- 欢迎 SphereEx 成为开源社年度白金伙伴
- 第二届Techo TVP 开发者峰会有感