📄 mkmemory.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 + -