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

📄 memalloc.cpp

📁 关于时下流行的粒子滤波程序的源码
💻 CPP
字号:
/*******************************************************************************\

Description:

	Header  file of Memory allocation routiness 

history:
	XinFan Mar. 16, 2002
\*******************************************************************************/

//#include "StdAfx.h"
#include <stdlib.h>
#include "MemAlloc.h"


//
//Allocate memeory and arrange pointers
//
bool AllocMem( BYTE** &pLoc , long lWidth , long lHeight )
{
	if ((pLoc = (BYTE **)malloc(lHeight * sizeof(BYTE *))) != NULL)
	{
		if ((*pLoc = (BYTE *)malloc(lWidth * lHeight * sizeof(BYTE))) != NULL)
		{
			for(long j = 0; j < lHeight; j++)
			{
				*(pLoc + j) = (BYTE *)(*pLoc + lWidth * j);
			}
			return true;
		}
	}
	exit(0);
	return false;
}

//
//Free memory
//
//Note: Should be called as pMem = FreeMem(pMem)
//
BYTE** FreeMem(BYTE **pMem)
{
	if (pMem == NULL) return NULL;
	free(*pMem);
	*pMem = NULL;
	free(pMem);
	return NULL;
}

bool AllocMem( long** &pLoc , long lWidth , long lHeight )
{
	if ((pLoc = (long **)malloc(lHeight * sizeof(long *))) != NULL)
	{
		if ((*pLoc = (long *)malloc(lWidth * lHeight * sizeof(long))) != NULL)
		{
			for(long j = 0; j < lHeight; j++)
			{
				*(pLoc + j) = (long *)(*pLoc + lWidth * j);
			}
			return true;
		}
	}
	exit(0);

	return false;
}

//
//Free memory
//
//Note: Should be called as pMem = FreeMem(pMem)
//
long** FreeMem(long **pMem)
{
	if (pMem == NULL) return NULL;
	free(*pMem);
	*pMem = NULL;
	free(pMem);
	return NULL;
}

//
//Allocate memeory and arrange pointers
//
bool AllocMem( double** &pLoc , long lWidth , long lHeight )
{
	if ((pLoc = (double **)malloc(lHeight * sizeof(double *))) != NULL)
	{
		if ((*pLoc = (double *)malloc(lWidth * lHeight * sizeof(double))) != NULL)
		{
			for(long j = 0; j < lHeight; j++)
			{
				*(pLoc + j) = (double *)(*pLoc + lWidth * j);
			}
			return true;
		}
	}
	exit(0);

	return false;
}

double** FreeMem(double **pMem)
{
	if (pMem == NULL) return NULL;
	free(*pMem);
	*pMem = NULL;
	free(pMem);
	return NULL;
}
//
//Allocate memeory and arrange pointers
//
bool AllocMem( float** &pLoc , long lWidth , long lHeight )
{
	if ((pLoc = (float **)malloc(lHeight * sizeof(float *))) != NULL)
	{
		if ((*pLoc = (float *)malloc(lWidth * lHeight * sizeof(float))) != NULL)
		{
			for(long j = 0; j < lHeight; j++)
			{
				*(pLoc + j) = (float *)(*pLoc + lWidth * j);
			}
			return true;
		}
	}
	exit(0);

	return false;
}

float** FreeMem(float **pMem)
{
	if (pMem == NULL) return NULL;
	free(*pMem);
	*pMem = NULL;
	free(pMem);
	return NULL;
}

bool AllocMem( float*** &pLoc , long lLayer, long lWidth , long lHeight )
{
	pLoc = (float ***)malloc(lLayer * sizeof(float**));
	if (pLoc != NULL)
	{
		float **sample_i;
		for (int i = 0; i < lLayer; i++)
		{
			sample_i = NULL;
			if (AllocMem(sample_i, lWidth, lHeight))
			{
				//memset(*sample_i, 0, nStateDim * nSamplesNum *sizeof(float));
				*(pLoc + i) = sample_i;
			}
			else
			{
				exit(0);
				return false;
			}
		}
		return true;
	}
	exit(0);
	return false;
}
float *** FreeMem(float ***pMem, long lLayer)
{
	for (int i = 0; i < lLayer; i++)
		*(pMem + i) = FreeMem(*(pMem + i));
	free(pMem);
	return NULL;
}

⌨️ 快捷键说明

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