首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

《c和指针》中关于内存分配的有关问题

2013-07-04 
《c和指针》中关于内存分配的问题《c和指针》关于内存分配的一个例程如下://********************************

《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里找吧

这是个代码安全技巧

热点排行