动态库的封装与设计
socketclient.lib:资源模式文件,描述socketclient.dll
socketclient.dll:动态库(函数二进制码集合,里面有函数的函数体)
一:导入与导出函数的匹配
在DLL代码中,必须明确声明导出函数:(windows下)
__declspec(dllexport) int MyFunction(int n);
仅有导入和导出声明并不能使应用程序内部的函数调用链接到相应的DLL文件上。应用程序的项目必须为链接程序指定所需的输入库(lib文件)。而且应用程序事实上必须至少包含一个对DLL函数的调用。
二:与DLL模块建立链接
三:使用符号名链接与标识号链接
采用标识号链接的应用程序exe文件体积相对较小,因为不必包含导入函数的长字符串符号名
动态库内存释放问题:
可以在dll函数中编写一个释放内存函数
内存泄露使用
1.memwatch可以跟踪程序中的内存泄漏和错误,能检测双重释放(double-free)、错误释放(erroneous
free)、没有释放的内存(unfreed
memory)、溢出(Overflow)、下溢(Underflow)等。
2.memwatch根本是不需要安装的,因为它只是一组C程序代码。需要做的是:
①在代码中加入 memwatch.c 和 memwatch.h,一起编译、链接
②预处理器定义 MEMWATCH、MW_STDIO
ufreed
log