VARIANT varArray;
int len=200;
SAFEARRAYBOUND bound;
bound.cElements=1024*len;
bound.lLbound=0;
SAFEARRAY* psa=NULL;
psa=SafeArrayCreate(VT_I1 ,1,&bound);
psa->fFeatures=FADF_AUTO|FADF_FIXEDSIZE;
psa->cbElements =1;
SafeArrayDestroy(psa);
只要把fFeatures设置为FADF_AUTO就有内存泄露,不知道为什么safeArrayDestroy不管事
8 个解决方案
#1
http://www.examda.com/ncre2/cpp/fudao/20080922/08183340.html
#2
没人遇到过?
#3
#define FADF_AUTO 0x0001 // Array is allocated on the stack
这个safearray明明不是在stack上分配的,你硬说它是stack分配的,当然有问题,在stack上分配的变量是不需要释放的,你告诉它不释放,能不泄漏么?使用一个标志要明白其含义,不能瞎用
这个safearray明明不是在stack上分配的,你硬说它是stack分配的,当然有问题,在stack上分配的变量是不需要释放的,你告诉它不释放,能不泄漏么?使用一个标志要明白其含义,不能瞎用
#4
我用vc没多久,搞不清楚内存分配的位置,以你的意思,这个safearray是在哪分配的?堆?
#5
总之不在栈,可能是堆,也可能是全局地址空间中(直接调用VirtualAlloc得不在堆上),这要看MS得设计了
#6
多谢 阿荣,我再研究一下,:)
#7
用另外一种方法解决了,这个还是不行,不用FADF_AUTO,我换了其他的参数还是有问题。
结贴
结贴
#8
多谢 happyparrot 的衔接
#1
http://www.examda.com/ncre2/cpp/fudao/20080922/08183340.html
#2
没人遇到过?
#3
#define FADF_AUTO 0x0001 // Array is allocated on the stack
这个safearray明明不是在stack上分配的,你硬说它是stack分配的,当然有问题,在stack上分配的变量是不需要释放的,你告诉它不释放,能不泄漏么?使用一个标志要明白其含义,不能瞎用
这个safearray明明不是在stack上分配的,你硬说它是stack分配的,当然有问题,在stack上分配的变量是不需要释放的,你告诉它不释放,能不泄漏么?使用一个标志要明白其含义,不能瞎用
#4
我用vc没多久,搞不清楚内存分配的位置,以你的意思,这个safearray是在哪分配的?堆?
#5
总之不在栈,可能是堆,也可能是全局地址空间中(直接调用VirtualAlloc得不在堆上),这要看MS得设计了
#6
多谢 阿荣,我再研究一下,:)
#7
用另外一种方法解决了,这个还是不行,不用FADF_AUTO,我换了其他的参数还是有问题。
结贴
结贴
#8
多谢 happyparrot 的衔接