关于内存释放有关问题
关于内存释放问题// 源程序比较长,我只是写了大概的结构.void FunA(){BYTE ArrayTemp1[64]for(int i 0
关于内存释放问题
// 源程序比较长,我只是写了大概的结构.
void FunA()
{
BYTE ArrayTemp1[64];
for(int i = 0;i < 10;i++)
{
FunB(T);
}
}
void FunB(PBYTE pArray)
{
BYTE ArrayTemp2[64];
// 我使用单步调试,在这里发现ArrayTemp1居然是错误指针,被释放掉了。
memcpy(ArrayTemp2,pArray,64);
}
VS2010的内存管理好像和VC6.0不同。
是不是使用指针就没问题。比如:
PBYTE pArray;
pArray = new BYET[64];
这是为什么?
明明我的函数FunA没有结束,只是跳转到函数FunB。
但是为什么ArrayTemp1被释放呢? 内存 指针 vs2010
[解决办法]T是什么?
[解决办法] FunB(T); T是什么?和ArrayTemp1没有什么关系啊
[解决办法]从代码看没问题,是不是其他地方的错误导致的,比如其他地方导致的栈破坏了,就有可能出现这种情况。
[解决办法]void FunB(PBYTE pArray)
{
BYTE ArrayTemp2[64];
// 我使用单步调试,在这里发现ArrayTemp1居然是错误指针,被释放掉了。
这里看不到ArrayTemp1只能看到pArray
[解决办法]从代码看没问题啊。
一种可能:两个BYTE数组都是在栈上分配的,其它代码写入数组溢出,破坏了栈。
你把数组大小从64放大到128试试。
[解决办法]不是这些代码的问题,感觉你在for循环里是不是做了什么操作,比如移位?