std::list在結構體中佔用的內存大小

#include<list>
#include<iostream>
#include<string.h>
#include<string>
#include<stdlib.h>

typedef struct tagTest
{
   char name[200];
   int  year;

}Test;

#define NUM 1

typedef struct tagInfo
{
   //int  count;
   char c;  //會對齊到8字節,無論是count或是char ,因爲後面跟的std::list<>是以16個字節爲單元的
   std::list<Test> lTest[NUM];
}Info;

static Info g_info;

int main()
{
   //std::list<Test> *lTest;
   //g_info.lTest = static_cast<std::list<struct tagTest> *>(malloc(NUM * 4 ));
   Test test1 = {0};
   strncpy(test1.name, "chenyc", 8);
   test1.year = 100;
   for (int i=0;i<NUM;++i)
   {
	   for(int j=0; j<200; ++j)
	   {
			g_info.lTest[i].push_back(test1);
	   }
   }
   /*
   for (int i=0;i<NUM;++i)
   {
	       std::cout << g_info.lTest[i].begin()->name << std::endl;
   }
   */
   for (int i=0;i<NUM;++i)
   {
    std::cout << g_info.lTest[i].size() <<  "  " << sizeof(g_info) << std::endl;
   }
   std::cout << sizeof(int) << "  " << sizeof(std::list<int>) <<"  " <<  sizeof(std::list<Test>)<< std::endl;
   return 0;
}

輸出:[root@vx-230 cyc]./list 
200  24
4  16  16

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章