c++ - 免费查询内存

标签 c++ compiler-errors cstring

我在以下代码中遇到编译错误。我正在用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/

相关文章:

c++ - 将 Linux 兼容项目从 Windows 移植到 Linux

c++ - 对话窗口在完成之前关闭(已接受);

c++ - 我的第一个 C++ 类(和错误)

c++ - 字符串问题

c++ - 如何在 Mac 上设置 C++ 应用程序名称和图标?

c++ - 如何消除重载模板函数的歧义?

c++ - OGRE不存在合适的转换函数

compiler-errors - make -j2时Makefile错误 “File exists”

visual-c++ - 如何交换 MFC CString?

c++ - 如何从字符数组创建 CString?