关于第三方库的编译问题。
我们可以把第三方库进行静态编译,将会生成静态库(*.lib)是一个很大的文件,
注意区别于动态库的lib导入库(较小,只有导入信息),同时要将该库用于MFC 需要
在
进行导入设定。同时注意的是编译第三方库的时候,下面选项要注意与你实际项目中相同位置中的设定相同。
否则实际项目中编译的时候将会出现,link2005 重定义之类的错误。
关于C++ 等中返回值为指针类型,如字符串指针等的时候,因为该指针指向的位置必须为new出来的,在内存堆里面,所以必然设置一个该堆内存由谁来负责释放的问题,一般情况是谁生成的,谁释放。所以应该由返回该指针的类进行释放,但有一个问题是什么时候开始释放呢,一般的可以在类的析构函数里面进行释放。另外一种,该类可以专门提供一个函数用于被外界显式调用进行分配的内存释放,如很多系统类带有releaseBuffer之类就是这个设计。
因为需要对之前分配的内存进行释放,所以该类必须有专门保存指向该堆内存的指针,这样在releaseBuffer或析构函数里面才能够进行正确的堆释放。
在这里,为避免外界对本来应该由A类自己释放的堆空间进行了释放。一个好的做法是返回const 类型的指针。
关于jsonCpp ,jsonCpp要求的字符串格式必须key和value都带双引号(" "),如下是正确的
{"cmdid":"sendFile"}
jsonCpp中如果字符串包含单个 ‘/’(反斜杠) 必须转换成 // (双反斜杠)
------------------------------ 关于内存泄露 ----------------------------------------
发现内存泄露,第一时间应该查找new关键字,看new 完后的指针是否正确释放了
------------------------------- 关于释放资源的方法 ------------------------------------
释放资源的方法必须被执行一次
---------------------- 应用程序名称的更改方法 -----------------------------------------
if (NULL != AfxGetApp()->m_pszAppName)
{
delete AfxGetApp()->m_pszAppName;
}
LPTSTR szAppName = new TCHAR[256];
_tcscpy(szAppName,"提醒");
AfxGetApp()->m_pszAppName = szAppName;