我只是在 Visual Studio 2010 中使用 grub-bootable C++ 内核。
我已经到了写新和删除的地步,动态分配的数组之类的东西可以工作。例如,我可以使用 STL 列表。在我写了一个 memcpy 例程之后,我什至可以对它们进行排序。问题是当我使用 std::vector 类型时。简单地构建向量将内核发送到 la la land。
显然我错过了某种函数实现,但我通过 STL 寻找它并空手而归。它在 push_back 失败:
vector<int> v;
v.push_back(1);
并消失在以太中。
关于我缺少什么的任何猜测?
编辑是的,它是 int 的向量。对困惑感到抱歉。不仅如此,它不是失败的构造函数,而是对 push_back 的调用。
最佳答案
根据我们上面的讨论,创建一个
std::vector<mySimpleStruct> v;
代替
std::vector<int> v;
似乎工作正常。这一定意味着问题出在标准模板库中 std::vector 某些函数的特化中。我假设您已经熟悉模板特化,但如果您不熟悉:
http://www.parashift.com/c++-faq-lite/templates.html#faq-35.7
另外,一旦你弄清楚真正的问题在哪里,你能回来在这里发布答案吗?你让我很好奇现在真正的问题在哪里,而且答案可能对其他试图构建自己的操作系统内核的人有所帮助。
关于visual-studio-2010 - 自定义操作系统上的 STL - std::list 有效,但 std::vector 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3508266/