16,472
社区成员
发帖
与我相关
我的任务
分享
头文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_MEM_ITEM_CNT 10240
typedef struct __shpMemCtrl{
unsigned int totalShpMemory;
unsigned int itemCnt;
void *ptr[MAX_MEM_ITEM_CNT];
unsigned int size[MAX_MEM_ITEM_CNT];
}shpMemCtrl;
shpMemCtrl gShmMemCtr;
extern void *Malloc_count(int size);
extern void Free_count(void *prt);
下面源文件
#include "sizecount.h"
void *Malloc_count(int size)
{
void *ptr = malloc(size);
static int first = 1;
if(first){
memset(&gShmMemCtr, 0, sizeof(gShmMemCtr));
first = 0;
}
for(int i=0; i<MAX_MEM_ITEM_CNT; i++){
if(gShmMemCtr.ptr[i] == NULL){
gShmMemCtr.ptr[i] = ptr;
gShmMemCtr.size[i] = size;
gShmMemCtr.itemCnt ++;
gShmMemCtr.totalShpMemory += size;
break;
}
}
return ptr;
}
void Free_count(void *ptr)
{
for(int i=0; i<MAX_MEM_ITEM_CNT; i++){
if(gShmMemCtr.ptr[i] == ptr){
gShmMemCtr.ptr[i] = NULL;
gShmMemCtr.totalShpMemory -= gShmMemCtr.size[i];
gShmMemCtr.size[i] = 0;
gShmMemCtr.itemCnt --;
break;
}
}
free(ptr);
}