我用的这个办法 :
char *Queue[10]; //一个全局的字符串指针
初始化: for(int i=0;i<10;i++)
Queue[i]=new char[100];
线程1 线程2可以互斥的对Queue访问 其中:
线程1通过 Append(char *str,dwTimeOut TiemOut)
{ .........
memcpy(Queue[j],str,strlen(str);
.........
} //将数据加入队列。
线程2 通过Fetch(char *str,dwTimeOut TimeOut)
{ ...........
memcpy(str,Queue[0],strlen(Queue[0]));
.........
} //从队列中取出指针
通过调试发现 不能的到正确的数据 请大家帮忙! 分可以加!
char *Queue[10]; //一个全局的字符串指针
初始化: for(int i=0;i<10;i++)
Queue[i]=new char[100];
线程1 线程2可以互斥的对Queue访问 其中:
线程1通过 Append(char *str,dwTimeOut TiemOut)
{ .........
memcpy(Queue[j],str,strlen(str);
.........
} //将数据加入队列。
线程2 通过Fetch(char *str,dwTimeOut TimeOut)
{ ...........
memcpy(str,Queue[0],strlen(Queue[0]));
.........
} //从队列中取出指针
通过调试发现 不能的到正确的数据 请大家帮忙! 分可以加!
解决方案 »
- vc2008 sp1生成一个 vs2005式样的程序,下次启动后,依旧能保持上次关闭时候的模样,这咋实现的?
- 为什么输出数据类型不对
- 在Static上显示图片的问题
- 急!!!大家都帮帮我啊!!!谢谢啦!!!
- 请教,关于透明位图的问题,在线等待
- 几位兄弟建议来这里问:在BMP图片数据上叠加字符,不是用于显示,而是真正叠加到图片中去(图像为640*480*3)
- 关于mutex和WaitForSingleObject的问题,请高手指点迷津
- 如何在对话框和它的子对话框之间传递较为大量的数据 在线等待,即解决即给分
- 关于CArray和CTypedPtrList的模板类问题
- 寻找EvilRoach(坏蟑螂)
- 向dll中传参数是引起malloc错误
- 互斥访问总是等待超时 在线急等!
我现在想知道可不可以这样来传递....
线程中的指针好像不行 我试了(不知道有没其他错误)
改成memcpy拷贝数据 还是不行... 高手帮忙。
-------------------------------------------------------------------------
Fetch(char *str,dwTimeOut TimeOut)
{ ...........
memcpy(str,Queue[0],strlen(Queue[0]));//这里不是拷贝过去了吗?
.........
} //从队列中取出指针
---------------------------------------------------------------------
或者在外面开好,可以在外面先用数组试试看
我试试看
void GetMemory(char *p)
{
p = (char *)malloc(100);
}
void Test(void)
{
char *str = NULL;
GetMemory(str);
strcpy(str, "hello world");
printf(str);
}请问运行Test函数会有什么样的结果?
答:程序崩溃。
因为GetMemory并不能传递动态内存,
Test函数中的 str一直都是 NULL。
strcpy(str, "hello world");将使程序崩溃。
void GetMemory(char *global)
{
char *p=NULL;
p = global; //p和global指向同一块堆内存
cout<<(LPCSTR)p<<endl;
}
void Test(void)
{
char *str =(char *)new(sizeof(char)*10);
str="hello world";
GetMemory(str);
}