现在位置: 首页 > 自动控制 > 工业·编程 > 文章
2012-11-24 20:35 工业·编程 ⁄ 共 1424字 暂无评论
编译器为什么要替我们内存对齐? 学了计算机组成原理,了解了内存的基本单元是一个字节,内存可以随机寻址,于是乎我天真的认为内存就是一个字节型的容器,基本单位是单个字节。   Figure 1. 我眼中的内存空间布局   悲剧的是,内存读写的真正访问者cpu不是这么想的。cpu是根据内存访问粒度(memory access granularity,下文简写成MAG)来读取内存,MAG就是cpu一次内存访问操作的数据量,具体数值依赖于特定的...
阅读全文
overload(重载),即函数重载: 在同一个类中; 函数名字相同; 函数参数不同(类型不同、数量不同,两者满足其一即可); 不以返回值类型不同作为函数重载的条件。 override(覆盖),用于实现C++中多态: 分别位于父类和子类中; 子类改写父类中的virtual方法; 与父类中的函数原型相同。 overwrite(重写): 与overload类似,但是范围不同,是子类改写父类; 与override类似,但是父类中的方法不是虚函数。
阅读全文
    许多初学者都会对这三个概念区分不清,应该说这三个概念是完全不同的,不能混为一谈。在本文中,我就尽我最大的能力来讲讲这三个概念以及他们之间的关系。 首先说程序设计语言     它同人类的自然语言一样也是一个语言,并且它是自然语言的一个子集。大家都知道自然语言是极其庞大和复杂的系统,具有很多不不确定性和不精确性,因此至今我们也没有办法对自然语言进行形式化的描述。程序设计...
阅读全文
    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。     附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件。如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。在开发和调试阶段,当然最好都有。 .h .lib .dll三者的关系是: H文件作用是:声明函数接口 DLL文件作用是: 函数可执行代码     当我...
阅读全文
2012-11-24 19:54 工业·编程 ⁄ 共 648字 暂无评论
    在做C++开发过程中,忽略了很重要的问题:自己申请的内存没有主动去释放。这样造成大量内存的泄漏,问题比较严重。如通过new 来申请的内存空间,必须手动去做delete 释放操作。 >>>C++内存泄漏检查心得 1、成员变量为指针对象,且在主函数中,为成员变量赋值后,不再做其他操作。可以在析构函数中做删除操作。 实例如下:CTest.cpp CTest::CTest():m_t(new CTestA())//初始化列表实现 {...
阅读全文
2012-11-24 19:49 工业·编程 ⁄ 共 1445字 暂无评论
    看到大家在代码中有很多用wcscpy、strcpy等的,这里总结下给大家参考下,希望对大家有帮助(这里的API都是windows平台下的,linux下的应该也有类似的替换函数): _tcscpy、_tcscpy_s 都是不安全的,换成_tcsncpy /_tcsncpy_s好些,最好用_tcsncpy_s wcscpy、wcscpy_s都是不安全的,换成wcsncpy / wcsncpy_s好些,最好用wcsncpy_s 非unicode 函数类似,linux版本类似。 下面是一些会导致出错的代码,直接都可以运...
阅读全文
2012-11-24 19:47 工业·编程 ⁄ 共 4713字 评论 1 条
    本人在参与一个大型Win32软件项目时,对整个项目进行了内存泄漏方面的检查,随着泄漏代码的一个个发现,发现许多的泄漏都具有某些共同性,于是乎总结了一些常见泄漏代码,发给同事们看了。希望能提醒下大家,但后来在项目的二期、三期版本出现的泄漏发现和以前的一些问题几乎是同一性质的,回过来看以前写的一些笔记发现都概括了(当时觉得自己是有那么两把刷子,^_^)。于是想到也许很多编程同志也会碰到同样...
阅读全文
一、故障或失误概况     局端MCU项目中CSS(Conference Schedule System)、NMS(NetWork Management System)模块自2.03版本起就有内存泄露的问题,开发 NGN版本时也花过大量的精力来争取解决这个问题,虽然也修正了一些内存泄漏,但最终检测工具表面现象显示剩下的内存泄露都是所使用的开发库的代码产生的,于是也就大意的认为是所使用的ACE/TAO库本身有内存泄漏,于是无果而终,使这两个模块的内存泄漏问题一直...
阅读全文
new/delete, array new/arrray delete匹配 case 1: 在类的构造函数与析构函数中没有匹配地调用 new/delete! 解决方法:检查构造函数,在出现new的情况下,按相反的顺序在析构函数中匹配添加delete! 这里有两个意思: 1〉new与delete匹配,array new/array delete匹配; 2〉出现在前面的new要比出现在后面的new后匹配各自的delete; 比如: 构造函数: m...
阅读全文
2012-11-22 22:08 工业·编程 ⁄ 共 15850字 暂无评论
char c='A'; char      szCr[]="ABC"; char *p和char p[] ============================================ std-string、char -和char []的问题解答 stringstr_s="abc"; char*str_cp="abc"; charstr_ca[]="abc"; 1.str_cp是指针,指向一段数据有四个元素,离别是'a','b','c','/0'。 2.str_ca是数组,它包括四个元素,离别是'a','b','c','/0'。 引用...
阅读全文