发布时间:2025-12-10 19:53:23 浏览次数:2
ExpandEnvironmentStrings函数的第二个参数的使用要注意「终于解决」今天写了一个新类,然后在里面写了ExpandEnvironmentStrings这个函数的调用,灰常高兴得把类封装好了之后,拿到外部调用的时候,在delete的时候肯定会崩溃,我单步,也看了各种数据,都正常,后来我们组长看了一眼就知道了,不亏是专家。下面我上一点代码:classCFileAssociation { public: CFileAssociation(); ~CFil
今天写了一个新类,然后在里面写了ExpandEnvironmentStrings这个函数的调用,灰常高兴得把类封装好了之后,拿到外部调用的时候,在delete的时候肯定会崩溃,我单步,也看了各种数据,都正常,后来我们组长看了一眼就知道了,不亏是专家。下面我上一点代码:
class CFileAssociation{public:CFileAssociation();~CFileAssociation();public:TCHAR m_strDesk;}; 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
CFileAssociation::CFileAssociation(){ExpandEnvironmentStrings(TEXT("%USERPROFILE%\\Desktop"), &m_strDesk, MAX_PATH);}CFileAssociation::~CFileAssociation(){ } CFileAssociation *file = new CFileAssociation();<span style="white-space:pre"></span>...//中间没什么,不写了,商业秘密。delete file;结果只要delete就崩溃,很蛋疼的一件事情。 到这里大家能看出来哪里错了吗?
其实就是ExpandEnvironmentStrings第二个参数的问题,因为第二个参数必须要是类自己的内存空间,所以一般用的一定都是数组,要在类里面被释放掉,否则会遇到越界崩溃的问题。
只需要这么写即可
class CFileAssociation{public:CFileAssociation();~CFileAssociation();public:TCHAR m_strDesk[MAX_PATH];};CFileAssociation::CFileAssociation(){ExpandEnvironmentStrings(TEXT("%USERPROFILE%\\Desktop"), m_strDesk, MAX_PATH);}CFileAssociation::~CFileAssociation(){ }