⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mkmemory.cpp

📁 纯c下一般用链表实现内存的动态分配
💻 CPP
字号:
#include "malloc.h"
#include "stdio.h"

#include "string.h"
/*typedef unsigned char MK_Byte;*/
//
#define SUCCESS 0 /*No error*/
#define MFAILED 1 /*General failure*/
#define MNOMEMORY 2 /*Out of memory*/

//声明

//确保初始化
//#define DeclareTwoDArray(ATYPE, iname) ATYPE ** iname = NULL
//
////定义自己的malloc和free,确保内存正确操作
//#define MKMALLOC(nsize) malloc(nsize)
//#define MKFREE(name) if(NULL != name) {free(name);name = NULL;}


int MKCreatArray(int nsize, int X, int Y, int *** parray)
{
int ** tdarray;
unsigned char *tmparray ;
int i = 0;
*parray=NULL;

//分配指针数组
if (!(tdarray = (int **)malloc(sizeof(unsigned char *) * Y))) 
{
return MNOMEMORY;
}
//分配实际数组空间
if (!(tmparray = (unsigned char * )malloc(nsize * (X * Y)))) 
{

free(tdarray);
return MNOMEMORY;
}

//初始化内存
memset(tmparray, 0x00, nsize * (X * Y));

//指针数组赋值
for (i = 0; i < Y; i++)
tdarray[i] = (int *)(tmparray + (i * X) * nsize);

*parray = tdarray;
return SUCCESS;
}

void FreeArray(int *** parray)
{
if (NULL!=*parray) free(*parray);
parray=NULL;
}

void main()
{
//声明数组
// DeclareTwoDArray(int, a);
// DeclareTwoDArray(float,b);
int **a=NULL;
//float **b=NULL;

//创建整型数组/
MKCreatArray(sizeof(int), 3, 2, &a);
a[1][2] = 10; 
a[0][1] = 23; 
printf("%d,%d\n",a[1][2],a[0][1]);
//使用完一定要FREE
FreeArray(&a);

//重新分配数组
MKCreatArray(sizeof(int), 6, 6, &a);
a[5][5] = 234;
a[4][0] = 567;
printf("%d,%d\n",a[5][5],a[4][0]);
FreeArray(&a);

//创建浮点数组
//MKCreatArray(sizeof(float),2,2,&b);
//b[0][0] = 0.5f;
//b[1][1] = 0.006f;
//printf("%g,%gn",b[0][0],b[1][1]);
/*FreeArray(&b);*/
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -