Invalid Address specified to RtlValidateHeap( 003A0000, 00E91F78 )
这里有一个exe和一个dll.
'CIved' is a class in exe.
'ITER()' and 'IVEDClear()' are functions in dll. 'ITER()' allocate some memory and 'IVEDClear()' clear memory allocated by 'ITER()'.
可以正确执行的代码如下:
for(int i=0; i<fn1n.size(); ++i){
CIved cived;
line1: ITER(fn1n[i],fn2n[i],fn3, logfile);
line2: IVEDClear();
line3: cived.import(fn1[i], fn3);
line4 : cived.export(fn1n[i]);
}
一切正常,没有内存问题.
但是当我把line1 and line2移到 line3 and line4后面执行,当退出一次for循环,cived析构时,MS viual c++ 6.0给出错误如下:
HEAP[IVED_0_1.exe]: Invalid Address specified to RtlValidateHeap( 003A0000, 00E91F78 )
因其错误的代码如下:
for(int i=0; i<fn1n.size(); ++i){
CIved cived;
line3: cived.import(fn1[i], fn3);
line4 : cived.export(fn1n[i]);
line1: ITER(fn1n[i],fn2n[i],fn3, logfile);
line2: IVEDClear();
}
盼望任何帮助。