malloc触发断点

malloc triggering breakpoint

本文关键字:断点 malloc      更新时间:2023-10-16

我正在构建一个由以下独立模块组成的应用程序:-GAClient:一个C++可执行程序-GAOrcl:一个由Oracle Pro*C生成的C DLL-GAEngine:一个C++DLL-MyGAUtils:函数的C++库

以下是不同模块的关联方式:-GAClient从GAOrcl调用几个函数,从MyGAUtils调用几个函数;-GAOrcl从GAEngine调用一些函数("DoGATraining"就是其中之一)-GAEngine从MyGAUtils 调用几个函数

我在GAClient.cpp中有两个类似的说明:

 double* vKaz=(double*)malloc(5*sizeof(double*));

和GAEngine.cpp:

double* vPastTarget=(double*)malloc(5*sizeof(double*)); 

我的问题是,malloc在从GAClient调用时运行良好,但随后在从GAEngine调用时崩溃。Visual Studio调试器抛出一个"GAClient.exe已触发断点"arror,并将我指向一个"lseeki64.c"源文件,我不知道它是什么…

我怀疑这可能与DoGATraining被定义为外部"C":这一事实有关

#define EXPORT __declspec(dllexport)
extern "C" EXPORT int       __stdcall DoGATraining(int pPastDataCount, double* pPastData)

知道从哪里开始排除故障吗?

您想要一个5个双精度的数组,而不是一个5指针的双精度数组,所以更改

double* vKaz=(double*)malloc(5*sizeof(double*));

double *vKaz = malloc(5 * sizeof(double)); /* don't cast malloc */

double *vKaz = malloc(5 * sizeof(*vKaz));