程序代码如下,直接复制到VSC++ 的Windows控制台程序下面即可执行,看效果。
不多解释
// EnterCriticalSectionTestDemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <queue>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
unsigned char *pSaveData;
unsigned char *pWriteData;
unsigned char *pReadData;
//cout<<"测试指针占有的字节数:"<<sizeof(pSaveData)<<endl;
pSaveData=(unsigned char *)malloc(188);
pWriteData=(unsigned char *)malloc(188);
pReadData=(unsigned char *)malloc(188);
for (int i=0;i<188;i++)
{
pSaveData[i]=0xff;
pWriteData[i]=0xee;
pReadData[i]=0xdd;
}
queue <unsigned char*> writeBuffer;//定义成指针的形式
queue <unsigned char*> readBuffer;
writeBuffer.push(pSaveData);
cout<<"sizeof(writeBuffer.front())="<<sizeof(writeBuffer.front())<<endl;
pWriteData=writeBuffer.front();
cout<<writeBuffer.size()<<endl;
memcpy(pReadData,pWriteData,188);//将pWriteData中的数据拷贝到pReadData中
cout<<"//"<<endl;
for (int j=0;j<188;j++)
{
printf("%d",pWriteData[j]);
//cout<<"Result:"<<pReadData[j]<<endl; 为什么这种情况下不打印结果
}
cout<<endl<<"//"<<endl;
for (int j=0;j<188;j++)
{
printf("%d",pReadData[j]);
//cout<<"Result:"<<pReadData[j]<<endl; 为什么这种情况下不打印结果
}
cout<<endl<<"//"<<endl;
return 0;
}