当前位置:编程学习 > C/C++ >>

如何实现给一个结构体队列分配内存空间

如何实现给一个结构体队列分配内存空间
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.zzzyk.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、程序运行结果如下图所示:
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,