我在以下代码中遇到编译错误。我正在用C++编写函数以释放内存
template<class T> inline void kill(T& v)
{
free(v);
v=0;
}
我正在调用此函数来释放Class对象,有时会释放字符串并得到以下错误。
错误1'void free(void *)':无法将参数1从'const char *'转换为'void *'
错误2'void free(void *)':无法将参数1从'Cstring'转换为'void *'
如果我更改如下代码,则没有错误。
template<class T> inline void kill(T& v)
{
free((void*)v);
v=0;
}
还有其他更好的解决方案吗?
最佳答案
如果您提到了正在使用的编译器,那就太好了。
在Visual Studio 2008中,我尝试编译您的代码(第一个示例),并且可以正常工作。
答案是,如果编译器不允许,您可以做什么。
您只需要使用第二个示例代码。
但是通常编译器应该允许这样做。
关于c++ - 免费查询内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795747/