有谁知道为什么在Xcode中,当你不喜欢字符串(C++)XCode中
string str;
cout << "input string";
getline(cin, str);
cout << str;
简单的东西,你会得到的malloc:***错误对象01x100000240:指针被释放没有被分配错误?谢谢。
有谁知道为什么在Xcode中,当你不喜欢字符串(C++)XCode中
string str;
cout << "input string";
getline(cin, str);
cout << str;
简单的东西,你会得到的malloc:***错误对象01x100000240:指针被释放没有被分配错误?谢谢。
这听起来像是您的实施中的一个错误。你可能已经离开了一些重要的东西,尝试一个完整的测试用例:
#include <iostream>
#include <ostream>
// iostream not required to declare operator<<(ostream&,char const*)
// but ostream is
#include <string>
int main() {
using namespace std;
cout << "Input: ";
string line;
if (!getline(cin, line)) {
clog << "Input error.\n";
return 1;
}
cout << "You entered: " << line << '\n';
return 0;
}
我通过谷歌发现在Xcode中这个bug一对夫妇引用。我发现最好的解决方法是
的解决方案是在 目标双击打开它的信息窗口,进入到 Build选项卡,然后向下滚动到 “GCC 4.2 - 预处理”一节。在 中,此部分是名为 “预处理器宏”的设置,默认情况下, 有两个条目“_GLIBCXX_DEBUG = 1” 和“_GLIBCXX_DEBUG_PEDANTIC = 1”。 删除这些条目。
这是xcode中的一个错误。要修复它,请将这些行粘贴到程序的最开始处(在任何#include语句之前):
#define _GLIBCXX_FULLY_DYNAMIC_STRING 1
#undef _GLIBCXX_DEBUG
#undef _GLIBCXX_DEBUG_PEDANTIC
在我的项目中无处不在定义_GLIBCXX_FULLY_DYNAMIC_STRING = 1为我解决了它。谢谢! – 2011-09-21 01:51:07
这看起来像是XCode中的一个错误,我也遇到了这个问题。 – kruczkowski 2009-11-29 13:44:03