门户网站制作流程,韩国风格网站模板下载,凡科快图入口,做网站的好项目由于不同的编译器和库#xff0c;其内部关于内存申请释放的实现不同#xff0c;因此不能直接要求用户指定用某个函数释放内存#xff0c;必须要单独自己封装一个释放的接口。有两种思路#xff1a;一是以指针作为参数得到数组地址#xff0c;单独设计一个释放的函数#…由于不同的编译器和库其内部关于内存申请释放的实现不同因此不能直接要求用户指定用某个函数释放内存必须要单独自己封装一个释放的接口。有两种思路一是以指针作为参数得到数组地址单独设计一个释放的函数内部与你的获取数组函数内存管理函数一致。BOOL CreateArray(int **pp){if (pp ! NULL) {// 其他算法int *array (int *)malloc(...);if (array ! NULL) {*pp array;return TRUE;}}return FALSE;}void CloseArray(int *p){if (p ! NULL) {free(p);}}// 使用int *array NULL;if (CreateArray(array)) {// 创建成功使用数组 arr// 使用完毕释放数组CloseArray(array);}二是学习微软对外隐藏全部的结构仅返回一个类似 HANDLE 这样的匿名类型内部包装自己的数据结构任何数据都通过这个 HANDLE 来访问。// 声明自己的私有结构体typedef struct {int *arr;// 其他成员变量} EXAMPLE;HANDLE CreateObject(){EXAMPLE *handle (EXAMPLE *)malloc(sizeof(EXAMPLE));if (handle ! NULL) {// 其他算法handle-arr (int *)malloc(...);if (handle-arr NULL) {free(handle);handle NULL;}}return (HANDLE)handle;}int *GetArray(HANDLE p){EXAMPLE *handle (EXAMPLE *)p;if (handle ! NULL) {return handle-arr;} else {return NULL;}}void CloseObject(HANDLE p){EXAMPLE *handle (EXAMPLE *)p;if (handle ! NULL) {if (handle-arr ! NULL) {free(handle-arr);}free(handle);}}// 使用HANDLE obj CreateObject();if (obj ! NULL) {int *array GetArray(obj);// 使用数组 arrCloseObject(obj);}