首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于内存释放有关问题

2013-10-13 
关于内存释放问题// 源程序比较长,我只是写了大概的结构.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循环里是不是做了什么操作,比如移位?

热点排行