摘要:对一个void*类型指针进行delete操作会出错,除非指针所指的内容是简单类型内容,因为这个操作只会释放内存,而不会执行析构函数 下面是一个代码示例: //:BadVoidPointerDeletion.cpp#include <iostream>using namespace std; clas
阅读全文
01 2020 档案
摘要:先来看一段代码 #include <iostream>using namespace std; class A{public: A(){ cout << "A() ...." << endl; } ~A() { cout << "~A()...." << endl; } void func() {
阅读全文
摘要:指针操作是C++开发中必备技能。尽管C++11开始引入了智能指针以缓解普通指针的滥用,但是某些场合必须使用普通指针。释放指针在C/C++编程中非常重要,一般推荐释放指针后立即将指针设置为null,防止出现低级的野指针问题(只能避免低级别的野指针)同时方便调试。 一、C语言时代在C语言编程中,我们由于
阅读全文
摘要:如果我们new出来的指针是一个基本类型,没什么关系,内存还是会被释放的,但是如果是一个类对象指针,在处理过程中转成了void*,那就有问题了,析构函数将不会被调用。故new的指针类型要和delete的指针类型要保持一致。 如下所示: object* p=new object[10]; void* p
阅读全文
摘要:一个类对象,当生命周期结束时,该对象会调用自身的析构函数。 一个类的指针,当使用delete函数来删除该指针时,会调用该指针当前类型的析构函数。 比如: classB* pClass = (classB*)new classA;delete pClass; 尽管该指针实际上是classA*类型,但将
阅读全文
摘要:一、BoundsChecker 或许你还不知道大名顶顶的Nu-Mega,但一定听说过他们的产品SoftICE,BoundsChecker也是这家公司的产品。与Visual C++配合使用,据说威力强大。本人和没有实际用过,在此复制一下百度百科的简介,好有个简单的认识。 BoundsChecker是一
阅读全文
摘要:1 前言 我在本文中具体介绍了測试工具NuMega Devpartner(下面简称NuMega)的用法。 NuMega是一个动态測试工具,主要应用于白盒測试。该工具的特点是学习简单、使用方便、功能有效。NuMega共同拥有三个独立的子功能——BoundsChecker、TrueCoverage、Tr
阅读全文
摘要:两种方法在Visual Studio Win32控制平台程序中使用超过4G的内存(以Visual Sutdio 2013为例) 如果你的程序运行中由于申请大空间而抛出了bad alloc异常,那这篇文章提出的两个方法将对你有些帮助。 捕获异常的方法很简单: try { your code...} c
阅读全文
摘要:1.X86程序与X64程序的区别X86程序的内存使用限制 在Windows32位操作系统中,每个进程所能使用的最大空间(包含操作系统使用的内核模式地址空间)为4G,在通常情况下,操作系统会分配2GB内存给进程使用,另外2G内存,另外2G内存为操作系统保留。何谓大内存 所谓“大内存”,就是指允许X86
阅读全文