memcpy奇怪的有关问题
memcpy奇怪的问题
代码如下
UINT elemSize = 56;
UINT elemCount = 20000;
BYTE * pTmpVB = new BYTE[ elemSize * elemCount ];
float data = 1.0f;
for( UINT i=0; i < elemCount; i++ )
{
pTmpVB += i * elemSize;
memcpy( pTmpVB + 52, &data , sizeof(float) );
}
上述代码出错,报告
写入位置 0x01b10b28 时发生访问冲突
如果把elemCount改很小,例如100就不出错,1000以上就出错。关键在于for循环不能太大。
是不是memcpy在做变址寻址时,动态范围不能太大?解决办法是什么?在线等。
------解决方案--------------------
是不是memcpy在做变址寻址时,动态范围不能太大?没有任何范围限制.
是你的程序 越界了,仔细看一下算法.
确定pTmpVB += i * elemSize;这里对么
代码如下
UINT elemSize = 56;
UINT elemCount = 20000;
BYTE * pTmpVB = new BYTE[ elemSize * elemCount ];
float data = 1.0f;
for( UINT i=0; i < elemCount; i++ )
{
pTmpVB += i * elemSize;
memcpy( pTmpVB + 52, &data , sizeof(float) );
}
上述代码出错,报告
写入位置 0x01b10b28 时发生访问冲突
如果把elemCount改很小,例如100就不出错,1000以上就出错。关键在于for循环不能太大。
是不是memcpy在做变址寻址时,动态范围不能太大?解决办法是什么?在线等。
------解决方案--------------------
是不是memcpy在做变址寻址时,动态范围不能太大?没有任何范围限制.
是你的程序 越界了,仔细看一下算法.
确定pTmpVB += i * elemSize;这里对么