【发布时间】:2010-08-18 01:17:32
【问题描述】:
我只是在 Visual Studio 2010 中使用 grub 可引导的 C++ 内核。
我已经到了写新和删除的地步,并且动态分配的数组之类的东西可以工作。例如,我可以使用 STL 列表。在我编写了一个 memcpy 例程之后,我什至可以对它们进行排序。问题是当我使用 std::vector 类型时。只需构造向量即可将内核发送到 la la land。
显然我缺少某种函数实现,但我通过 STL 查找它并空手而归。它在 push_back 处失败:
vector<int> v;
v.push_back(1);
然后消失在以太中。
对我缺少什么有任何猜测吗?
编辑是的,它是 int 的向量。对困惑感到抱歉。不仅如此,它失败的不是构造函数,而是对 push_back 的调用。
【问题讨论】:
-
我希望你的意思是 vector
什么的……或者“i”是一种类型? -
你能否详细介绍一下这个 C++ 内核是什么,一些示例代码,还有其他什么?你写的有点模糊。
-
它实际上是基于ksrenevasan.blogspot.com/2005/10/… 内存是我学习时目前最简单的方案。它只是从 grub 的 multiboot 结构中获取最大的 base low 到 base high ,然后从该点开始将内容转换到内存中,从 base low 中减去请求的内存量,而 free 什么都不做 - 它就在那里。我知道两者都被适当地调用,如果我使用列表并对它们进行排序,它们都会打印内核消息,说明发生了分配或调用了释放。
-
我曾经在过时的 Linux + 过时的 GCC + 过时的 STL 上遇到过类似的问题。
v.insert( v.end(), 1 );当时帮了我。
标签: visual-studio-2010 operating-system stdvector visual-c++-2010