如何實現給一個結構體隊列分配內存空間 1、主要功能 對於一個結構體隊列在使用前要進行初始化,即給該隊列分配內存空間。 主要進行兩方面的操作: (1)該隊列中應該有幾個對象; (2)每個對象占有的內存空間是多大; 2、程序代碼如下所示: [cpp] // 結構體占內存空間的判斷.cpp : 定義控制台應用程序的入口點。 // #include "stdafx.h" #include <string> #include "iostream" #include <queue> #include <Windows.h>//使用隊列時應該引用的頭文件 using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //聲明一個標明學生信息的結構體 typedef struct STUDENT_INFO { char num;//編號 int age; float salary; STUDENT_INFO *stuInfoNext; }*LP_STUDENT_INFO;//注意給結構體定義一個指針的名稱; LP_STUDENT_INFO stu1; stu1=(LP_STUDENT_INFO)malloc(sizeof(STUDENT_INFO));//一定要對指針結構體初始化; stu1->num='1'; stu1->age=15; stu1->salary=1000.0; stu1->stuInfoNext=NULL; queue <LP_STUDENT_INFO> qStudentInfo; //利用指針來命名隊列 qStudentInfo.push(stu1); cout<<qStudentInfo.size()<<endl; cout<<stu1<<endl;//此時只能輸出stul的首地址; typedef struct TRANSMIT_DATA_BUFFER { LPBYTE transmitDataBuffer; //此處留作定義其他的變量成員用於控制IP的傳送速率 }*LP_TRANSMIT_DATA_BUFFER; queue <LP_TRANSMIT_DATA_BUFFER> transmitBuffer; LP_TRANSMIT_DATA_BUFFER temporaryTransmitBuffer;//為定義的隊列分配內存空間 for (int i=0;i<8;i++) www.2cto.com { temporaryTransmitBuffer=(LP_TRANSMIT_DATA_BUFFER)malloc(sizeof(TRANSMIT_DATA_BUFFER)); temporaryTransmitBuffer->transmitDataBuffer=(LPBYTE)malloc(1024*188); transmitBuffer.push(temporaryTransmitBuffer); } cout<<"transmitBuffer.size="<<transmitBuffer.size()<<endl; return 0; } 3、程序運行結果如下圖所示: