大家都知道,DLL传递数据时,一定要注意数据的长度及格式(特别是跨平台调用,因为有些数据在不同平台上长度或者格式会有所差别),我在调用DLL时经常会遇到一个内存越界的问题,这个大部分原因是我的疏忽。
内存越界,在本人的程序中一般是由于数组的越界照成的,比如调用者与被调者需要传递数组数据(定长),其中一个把数组变量长度设置为n,另一个把忘记设置长度或者设置为b(当然数据的写入方写入的长度小于接收方的长度时,往往是不会出现问题的),这时就很容易造成内存越界的错误发生。
还有一个就是生成是的MTD -> MT切换造成的DLL调用内存分配失败(在调用MTD模式下编译出的DLL时是正确的,但是在MT模式下提示失败),一般是由于变量在使用之前没有初始化造成的。