gpt4 book ai didi

c++ - malloc 触发断点

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:48 25 4
gpt4 key购买 nike

我正在构建一个由以下独立模块组成的应用程序:- 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*)); 

我的问题是,从 GAClient 调用 malloc 时工作正常,但随后从 GAEngine 调用时崩溃。 Visual Studio 调试器抛出“GAClient.exe 已触发断点”错误,并将我指向一个“lseeki64.c”源文件,我不知道它是什么...

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

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

知道我可以从哪里开始进行故障排除吗?

最佳答案

你想要一个包含 5 个 double 的数组,而不是一个包含 5 个 double 指针的数组,所以更改

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

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

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

关于c++ - malloc 触发断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26157812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com