如何實現給一個結構體隊列分配內存空間
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、程序運行結果如下圖所示: