编译工程的时候发现包含stl的部分无法正常运行.<br /><br />很简单的写了一段测试代码在main函数中执行却是正确的,如下:<br />list<int, allocator<int> >l;<br />l.push_back(10);<br />l.push_back(11);<br /><br />int i = l.front();<br />if(i) i.push_back(12); //防止被编译器优化掉前一句代码.<br />else i.push_back(13);<br /><br />l.pop_front();<br /><br />int i = l.front();<br />if(i) i.push_back(12); //防止被编译器优化掉前一句代码.<br />else i.push_back(13);<br /><br />以上代码执行毫无问题.<br /><br />接下来,定义了一个包装类,和一个静态变量:<br />class TFake<br />{<br /> public:<br /> list<int, allocator<int> > l;<br /> TFake()<br /> {<br /> l.push_back(10);<br /> l.push_back(11);<br /> }<br />};<br /><br />TFake f;<br /><br />然后对f进行操作.发现无法通过了<br /><br /> int i = f.l.front();<br /> if(i) f.l.push_back(12); 舑<br /> else f.l.push_back(13); <br /> <br /> f.l.pop_front(); <br /> i = f.l.front(); <br /> if(i) f.l.push_back(12); <br /> else f.l.push_back(13);<br /><br /><br /><br />难道stl无法在编译阶段使用吗?这应该和内存分配有关.编译器如何处理编译阶段静态变量的堆分配请求呢? |
|