11.C++ 动态内存管理

在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;
}

猜你喜欢

转载自www.cnblogs.com/shenji/p/12347348.html