2009-11-16 58 views
5

有谁知道为什么在Xcode中,当你不喜欢字符串(C++)XCode中

string str; 
cout << "input string"; 
getline(cin, str); 
cout << str; 

简单的东西,你会得到的malloc:***错误对象01x100000240:指针被释放没有被分配错误?谢谢。

+0

这看起来像是XCode中的一个错误,我也遇到了这个问题。 – kruczkowski 2009-11-29 13:44:03

回答

1

这听起来像是您的实施中的一个错误。你可能已经离开了一些重要的东西,尝试一个完整的测试用例:

#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; 
} 
1

我通过谷歌发现在Xcode中这个bug一对夫妇引用。我发现最好的解决方法是

的解决方案是在 目标双击打开它的信息窗口,进入到 Build选项卡,然后向下滚动到 “GCC 4.2 - 预处理”一节。在 中,此部分是名为 “预处理器宏”的设置,默认情况下, 有两个条目“_GLIBCXX_DEBUG = 1” 和“_GLIBCXX_DEBUG_PEDANTIC = 1”。 删除这些条目。

2

这是xcode中的一个错误。要修复它,请将这些行粘贴到程序的最开始处(在任何#include语句之前):

#define _GLIBCXX_FULLY_DYNAMIC_STRING 1 
#undef _GLIBCXX_DEBUG 
#undef _GLIBCXX_DEBUG_PEDANTIC 
+0

在我的项目中无处不在定义_GLIBCXX_FULLY_DYNAMIC_STRING = 1为我解决了它。谢谢! – 2011-09-21 01:51:07