...因此,当返回 DLL 创建的字符串或浮点数组时,您有以下选择:
- 设置一个指向动态分配缓冲区的持久指针,返回该指针。在下一次调用函数时 (1) 检查指针是否不为空,(2) 释放上一次调用分配的资源并将指针重置为空,(3) 将指针重新用于新分配的内存块。...
拨打免费电话时出现以下错误对话框:
MSVC++ Debug Library HEAP CORRUPTION DETECTED: after Normal block(#135) at 0x....... CRT 检测到应用程序在 heap 缓冲区结束后写入内存。
这是我的代码:
FP * g_FP;
extern "C" FP * __stdcall xllFill(long rows, long cols) {
if (g_FP != NULL) {
free(g_FP);
g_FP = NULL;
}
g_FP = (FP *)malloc(rows * cols * sizeof(double) + 2 * sizeof(unsigned short int));
for (int i = 0; i < rows * cols; i++) {
(*g_FP).data[i] = (double)i;
}
(*g_FP).rows = (unsigned short int)rows;
(*g_FP).cols = (unsigned short int)cols;
return g_FP;
}
我对 C++ 有点生疏,但我一辈子都想不通为什么这不起作用。