这种情况下会有内存泄漏吗?如果有,怎么Delete
现在程序需要一个功能,在某个目录下(大多数情况下是在程序的目录下的一个子目录)
然后这些目录下可能有一个或多个dll,文件名不同,但每个.dll文件里都会有个函数
int foo(int x , int y)每个.dll的文件里的函数名都相同,但函数代码不相同
然后程序在运行时,会根据不同的状况加载.dll调用foo函数,类似这样
typedef int (*FOO)(int,int);
std::string dllNms = getDevStatus(); //根据设备情况决定加载那个dll
FOO f = loadDll("F/DevDll/"+dllNms); //该函数用于加载dll文件内的foo()函数
int res = f(devNumbers,devCounts);
然后,就这段代码而言,在程序运行过程中需要多次执行,f作为一个函数指针,没有对应的delete,有没有存在内存泄漏的问题
如果有该如何delete?
delete f;这段代码MingW编译器直接报错
相关推荐
浅谈内存泄漏
初级分析代码时用到的一些例子
C++中什么时候用new[]申请,可以用delete释放
c语言中的 malloc 和 free ,这两个是库函数,而在c++中 new 和 delete是运算符(和 + - * /一样),在使用new的时可以看成使用默认使用构造函数+malloc,使用delete时可以看成使用析构函数+free。 简单说一下malloc : 系统管理堆内存运用的是链表的方式:分配堆内存地址时依次由低向高遍历”堆链“,但遇到大小合适的堆块时,将这个堆块从”堆链“中删除,...
c++智能指针的创建
c++智能指针的创建 c及c++中的指针是很麻烦的 所以现在有很多技巧去减少问题的出现。 欢迎大家给出意见。
原生ajax库实现jsonp跨域短小精悍
原生ajax库,实现jsonp跨域,短小精悍。
C++内存管理.doc
内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、内存回收这三个方面来探讨C++内存管理问题。 内容预览: 1 内 存管理 1.1 C++内存管理详解 1.1.1 内存分配方式 1.1.1.1 分配方式简介 1.1.1.2 明确区分堆与栈 1.1.1.3 堆和栈究竟有什么区别? 1.1.2 控制C++的内存分配 1.1.2.1 重载全局的new和delete操作符 1.1.2.2 为单个的类重载 new[ ]和delete[ ] 1.1.3 常见的内存错误及其对策 1.1.4 指针与数组的对比 1.1.4.1 修改内容 1.1.4.2 内容复制与比较 1.1.4.3 计算内存容量 1.1.5 指针参数是如何传递内存的? 1.1.6 杜绝“野指针” 1.1.7 有了malloc/free为什么还要new/delete? 1.1.8 内存耗尽怎么办? 1.1.9 malloc/free的使用要点 1.2 C++中的健壮指针和资源管理 1.2.1 第一条规则(RAII) 1.2.2 Smart Pointers 1.2.3 Resource Transfer 1.2.4 Strong Pointers 1.2.5 Parser 1.2.6 Transfer Semantics 1.2.7 Strong Vectors 1.2.8 Code Inspection 1.2.9 共享的所有权 1.2.10 所有权网络 2 内存泄漏 2.1 C++中动态内存分配引发问题的解决方案 2.2 如何对付内存泄漏? 2.3浅谈C/C++内存泄漏及其检测工具 2.3.1 内存泄漏的定义 2.3.2 内存泄漏的发生方式 2.3.3 检测内存泄漏 2.3.3.1 VC下内存泄漏的检测方法 2.3.3.2 使用BoundsChecker检测内存泄漏 2.3.3.3 使用Performance Monitor检测内存泄漏 3 探讨C++内存回收 3.1 C++内存对象大会战 3.1.1 基本概念 3.1.2 三种内存对象的比较 3.1.3 使用栈对象的意外收获 3.1.4 禁止产生堆对象 3.1.5 禁止产生栈对象 3.2 浅议C++ 中的垃圾回收方法



