【发布时间】:2011-06-25 10:41:35
【问题描述】:
考虑以下代码:
char* str1 = new char [30];
char* str2 = new char [40];
strcpy(str1, "Memory leak");
str2 = str1;
delete [] str2;
delete [] str1;
为什么上面的程序会导致内存泄漏?我该如何避免这种情况?
【问题讨论】:
-
这是作业吗?如果是,它应该被标记为这样。
-
您可以通过使用
std::vector<char>或std::string来避免它。 -
用
strcpy(str2, str1)替换str2 = str1 -
@MichaelKjörling:为什么?我想你是对的,我无法想象除了学生之外的任何人都曾被 C 或 C++ 中的内存管理所迷惑。
标签: c++ memory memory-leaks