visual-studio-2010 - 自定义操作系统上的 STL - std::list 有效,但 std::vector 无效

标签 visual-studio-2010 operating-system stdvector visual-c++-2010

我只是在 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/

相关文章:

asp.net - VS.NET 2010 是否支持为 Web 应用程序设置子项目?

visual-studio-2010 - 在重构期间将 VS2010/Resharper 获取到 "git move"

c++ - bad_alloc 标识符无法识别?

operating-system - 从逻辑地址到物理地址的转换

c++ - 用 ones 和 zeros C++ 创建一个随机的 std::vector

c++ - 如何洗牌 std::vector?

c - 使用 64 位 Visual C 的巨大 C 数组的速度问题

memory-management - 什么类型的输入会减慢动态内存分配器 malloc() 和 free() 的执行时间?

java - 为什么 java 也是系统/操作系统名称(python 中的帮助文档)?

c++ - 初始化一对 vector 并转换它们