c++ - 返回分配的局部变量

标签 c++ visual-c++ memory c++11

我该怎么做。

char* ToString(int num) {

    char* str = new char[len(num)];

    //conversion

    return str;

并通过调用它。

string someStr = ToString(someInt);

我应该在这里释放 someStr 吗?

我知道每当我使用 new 时我总是需要delete

如果我多次调用这个函数会怎么样,我是否分配了内存并让它们不使用它呢?

最佳答案

你应该完全避免这种做法。要么返回一个 std::unique_ptr,要么直接处理 std::string。从你的代码中不清楚你到底想做什么,所以我不能提供具体的解决方案。

注意这个初始化:

string someStr = ToString(someInt);

只有当您返回一个以 null 结尾的字符串时才会正常工作,但无论如何它都会泄漏资源。

参见 this related post .

关于c++ - 返回分配的局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14707001/

相关文章:

适用于 Ubuntu 12.04 的 C++ 编译器/SDK - Netbeans

c++ - 在 Windows XP 中使用 C/C++ 中的动态数组最简单的方法是什么?

c++ - 运行时而不是加载时出现符号查找错误

c - 这个 Valgrind 警告是什么意思? - 警告设置地址范围权限

c++ - <winapifamily.h> 和 "fatal error C1012: unmatched parenthesis : missing ' )'

Visual Studio 上的 C 或 C++

visual-studio-2010 - 错误 LNK2001 : unresolved external symbol

c++ - 如何计算图像的间距 Visual Studio

c - C中的变量定义和内存分配

delphi - 我的 Delphi 程序似乎正在泄漏