具体情况是这样:
我在主线程中动态分配了一个二维的数组
char **p = new char*[num1];
for(int i=0; i<num1; ++i)
{
p[i] = new char[num2];
}
那么得到二维数组为p[num1][num2],此时如果输出strlen(p[i]),得到的结果就是num2.
然后将p作为参数传给另外一个子线程,假定形参为char ** pParam,如果此时再用strlen(pParam[i]),得到的结果是1.为什么?
这是否就说明在子线程中不能修改主线程中动态分配的内存中的内容?
还是可以,只是我自己的操作有误?望大牛相助!!!
我在主线程中动态分配了一个二维的数组
char **p = new char*[num1];
for(int i=0; i<num1; ++i)
{
p[i] = new char[num2];
}
那么得到二维数组为p[num1][num2],此时如果输出strlen(p[i]),得到的结果就是num2.
然后将p作为参数传给另外一个子线程,假定形参为char ** pParam,如果此时再用strlen(pParam[i]),得到的结果是1.为什么?
这是否就说明在子线程中不能修改主线程中动态分配的内存中的内容?
还是可以,只是我自己的操作有误?望大牛相助!!!
解决方案 »
- NM_KILLFOCUS是废柴吗?
- wav文件播放可以跳过文件头
- 急!ComboLBox中通过ListBox_GetText获取的字符为乱码
- 函数返回char*的长度问题
- win2k操作系统如何检测到被终止的进程?系统快照能够获取到加载到内存的所有进程当前相关状态信息 ,当一个进程被终止时快照能否及时更新
- 既然是UDP方式,为何要调用connect进行连接?
- 怎样在没有装vc的机器上运行我debug产生的程序
- 串口配置问题
- 如何在程序定时清空文本文件的内容??
- vc++ odbc mysql 如何实现删除数据库中的表?
- 想问一下 福州富士通通信软件公司的软件工程师待遇
- 用MFC创建ACTIVE控件BUILDER后报错误Program:C:\WINDOWS\SYSTEM\REGSVR32.EXE错误
字符串要有个 0 结尾才行.
所有 怀疑, 缓冲区里 你还没有 赋 什么值. 你 就 测长度,肯定不对.另外, c 里的 2 维数组,在连续的空间里, 你这样作不符合习惯, [][] 这样的运算可能有问题,
不过,你 自己定义的数据结构你 自己 知道就可以了.