碰到线程内存申请奇怪问题。
近日,由于需要,封装了一个多线程TCP读写库。
其中,我需要在DLL的函数中,申请内容缓冲区。
(创建了一个非MFC的DLL。环境,WIN2000P, VC6.0+sp5)
在DLL中,我使用malloc申请内存能够成功,但是free时
出现0xC00005的异常(使用VC调式时候会出现在LOG窗口中,用try也捕捉不了异常)
用内存察看器发现free总是会多释放一些内存,如果我跟踪进free(因此VC会采用调适版的free)发现它判断我的buffer总是会大些。例如,我申请12bytes,它会释放我32bytes.我以为是字节对齐问题。所以
加上了
#pragma pack( push, 1 )//在数据定义时,也加上了这个
但是问题还是如此
但是如果我申请一个10000bytes的缓冲区,它就不会有问题。
(请不要提醒我,使用GlobalAlloc或LocalAlloc来申请buffer,因为程序需要移植)