《c和指针》中关于内存分配的问题
《c和指针》关于内存分配的一个例程如下:
//****************************************
//alloc.h
//***************************************
#define <stdlib.h>
#define malloc DON'T CALL malloc DIRECTLY
#define MALLOC(num, type) (type *)alloc( (num)*sizeof(type) )
extern void *alloc( size_t size);
//*************************
//alloc.c
//****************************
void *alloc( size_t size)
{
void *new_mem;
/*
**Ask for the requested memoory, and check that we really got it
*/
new_mem = malloc( size );
if( new_men == NULL)
{
PRINTF("Out of memory!\n");
exit(1);
}
return new_mem;
}
//***************************
//a_client.c
//***************************
#include "alloc.h"
void function()
{
int *new_memory;
new_memory =MALLOC(25, int);
}
有个疑惑,在第一个alloc.h文件中有一句是宏定义为:
#define malloc DON'T CALL malloc DIRECTLY
但是在alloc.c中又直接调用了malloc:
new_mem = malloc( size );
这样不就是出错了吗,在alloc.c中调用malloc的时候摆会不会直接被替换为了DON'T CALL malloc DIRECTLY
这样不就报错了吗???
C 内存分配 指针 malloc 宏定义
[解决办法]
#ifdef被帖主忽略了?
[解决办法]
alloc前会undef,自己在.c里找吧
这是个代码安全技巧