struct MemList
{
typedef enum State
{
NoInCreate = 0,
InCreate = 1
}
State state;
int nCount;
};
int memlistsize = sizeof(MemList);
MemList *memlist1 = new MemList[10];
MemList *memlist2 = new MemList[10];
for(int i = 0; i < 10; i++)
{
memlist1[i].nCount = -1;
memlist2[i].nCount = 0;
}
memlist1[0].nCount = 11;
memlist1[1].nCount = 12;
int nListInx = -1;
for(int i = 0; i < 10; i++)
{
if(memlist1[i].nCount > -1)
{
nListInx++;
//下面这句有时会让memlist2[x].nCount出现-1的情况
memcpy(memlist2+nListInx*memlistsize, memlist1+i*memlistsize, memlistsize);
//而下面这句memlist2[x].nCount结果正常
//memcpy(&memlist2[nListInx], &memlist1[i], memlistsize);
}
}
为什么memcpy(memlist2+nListInx*memlistsize, memlist1+i*memlistsize, memlistsize);会引起结果异常呢?
{
typedef enum State
{
NoInCreate = 0,
InCreate = 1
}
State state;
int nCount;
};
int memlistsize = sizeof(MemList);
MemList *memlist1 = new MemList[10];
MemList *memlist2 = new MemList[10];
for(int i = 0; i < 10; i++)
{
memlist1[i].nCount = -1;
memlist2[i].nCount = 0;
}
memlist1[0].nCount = 11;
memlist1[1].nCount = 12;
int nListInx = -1;
for(int i = 0; i < 10; i++)
{
if(memlist1[i].nCount > -1)
{
nListInx++;
//下面这句有时会让memlist2[x].nCount出现-1的情况
memcpy(memlist2+nListInx*memlistsize, memlist1+i*memlistsize, memlistsize);
//而下面这句memlist2[x].nCount结果正常
//memcpy(&memlist2[nListInx], &memlist1[i], memlistsize);
}
}
为什么memcpy(memlist2+nListInx*memlistsize, memlist1+i*memlistsize, memlistsize);会引起结果异常呢?
解决方案 »
- vc6转到vs2005的一个问题?
- 200分请问一个ACTIVEX问题,界面在宽屏下无法正常显示,怎么办?
- #include "..\OLEDBErrorChecking\OLEDBErrorChecking.h"怎么回事?
- 在vc怎样中使用动态连接库?
- 求获得硬盘序列号代码,只要win9x下的
- Cannot open precompiled header file: 'Debug/ClientSock.pch':这是什么意思?
- 急救,如何重载控件的滚动条,并改变的滚动条的颜色啊???
- 怎么继承自己写的类?
- 如何防止重复打开同一个程序。
- 如何把CString类型转换为const char*类型?在线等待!
- 问个简单问题
- ShellExecute 新手问题
memcpy(&memlist2[nListInx], &memlist1[i], memlistsize);与上面那个是一个意思,不同的表示方法而已
int a[10];
int *p = a;
p = p + 1; // 这个时候p指向了a[1];指针p的加1相当于内存地址加了sizeof(int)