我有一个名为node的简单结构,它保存一个值+2指向下一个/前一个节点。
template <class T>
struct node {
node<T> *prev = NULL;
node<T> *next = NULL;
T data;
};
这里我们有一个函数,可以在最后添加一个新节点。
void push_back( T val ) {
node<T> *n = new node<T>; // create node to hold val
n->data = val; // set node data with val
if ( node_count == 0 ) {
begins = n; // begins points to first node
}
else{
ends->next = n; // set next in ends
n->prev = ends; // set previous
}
ends = n; // update ends
node_count++; // update list size
}
最后,在main中,我们尝试创建30m链接节点,每个节点都包含一个唯一的int值。
int node_sum = 30000000;
for (int i = 0; i != node_sum; i++){
sl.push_back(i);
}
运行时:
exex中0x74C0C42D处的未处理异常:Microsoft C ++异常:内存位置0x0047F53C处的std :: bad_alloc。
下面:
void push_back( T val ) {
node<T> *n = new node<T>; // create node to hold val
当:
创建29388062th或2.9mnth节点,确切的节点数随每次运行而变化,但始终至少为2.938m。
我在考虑达到某种限制,但是任务经理说整个Windows平台只使用4GB的ram,这意味着有4gb的备用。