【发布时间】:2015-06-07 18:46:05
【问题描述】:
我有一个问题。 我使用以下代码将 std::string 转换为 QString。
std::string testStdStr = "Hello";
QString test = QString::fromStdString(testStdStr);
此代码在 MSVC 2013 Prof 下引发 bad_alloc 异常,但仅限于调试模式!如果我在发布模式下编译,一切都会按预期工作。
一些附加信息:SUBSYSTEM 更改为 Windows 并且入口点设置为 mainCRTStartup
在QString对象初始化的时候抛出异常! 有什么建议么?如果您需要更多信息,请询问!
【问题讨论】:
-
你使用的是什么 Qt 版本?
-
感谢您的回答! 5.4 msvc 32 位
-
我添加了一些信息
-
你试过调试器了吗?在我看来,this 构造函数中对
d = Data::allocate(size + 1);的调用失败了,而Q_CHECK_PTR(d);因此导致异常。我想知道在这种情况下实际的size值是多少。我想您需要检查QArrayData::allocate在您的情况下返回0的位置以及原因。 -
另外有趣的是您的程序中发生的其他分配。也许真的没有内存了,而更多的信息在调试模式下编译可执行文件时存储在ram中。
标签: qt visual-c++ bad-alloc