在dll中malloc的内存, 必须要在dll中free掉,否则无法编译通过
//dll文件 #include <stdio.h> #include <iostream> #define MYDLL _declspec(dllexport) // 当使用预编译的头时,需要使用此源文件,编译才能成功。 MYDLL int* My_Alloc(int size) { int* p = (int *)malloc(size * sizeof(int)); for (int i = 0; i < size; i++) { p[i] = i; } return p; } MYDLL void My_Free(int* p) { free(p); } //exe文件 #define MyDll _declspec(dllimport) #pragma comment(lib,"my.lib") MyDll int test(int a, int b); MyDll int* My_Alloc(int size); MyDll void My_Free(int* p); int main() { int *p = My_Alloc(10); for (int i = 0; i < 10; i++) { cout << p[i]<<endl; } My_Free(p); return 0; }
原文:https://www.cnblogs.com/shenji/p/12347348.html