一组新的C内存管理函数,主要是方便使用。
// inline.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#ifndef BOOL
#define BOOL int
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
inline void
free_and_null(void **p)
{
free(*p);
*p = NULL;
}
inline void
zero_memory(void *p, size_t size)
{
memset(p,0,size);
}
inline void*
get_memory(size_t size)
{
return malloc(size);
}
inline void
free_memory(void *p)
{
free(p);
}
inline BOOL
resize_memory(void **p, size_t newSize)
{
void *q = realloc(*p,newSize);
if (NULL == q)
return FALSE;
else
{
*p = q;
return TRUE;
}
}
int main(int argc, char* argv[])
{
void *p;
p = malloc(20);
zero_memory(p,20);
sprintf((char*)p, "yes");
if (resize_memory(&p, 50))
printf("resize ok");
else
printf("resize fail");
printf("%s", p);
if (NULL != p)
printf("OK\n");
free_and_null(&p);
if (NULL == p)
printf("OK\n");
else
printf("fail\n");
return 0;
}
VC6.0编译通过
~~The END~~
尹曙光
// inline.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#ifndef BOOL
#define BOOL int
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
inline void
free_and_null(void **p)
{
free(*p);
*p = NULL;
}
inline void
zero_memory(void *p, size_t size)
{
memset(p,0,size);
}
inline void*
get_memory(size_t size)
{
return malloc(size);
}
inline void
free_memory(void *p)
{
free(p);
}
inline BOOL
resize_memory(void **p, size_t newSize)
{
void *q = realloc(*p,newSize);
if (NULL == q)
return FALSE;
else
{
*p = q;
return TRUE;
}
}
int main(int argc, char* argv[])
{
void *p;
p = malloc(20);
zero_memory(p,20);
sprintf((char*)p, "yes");
if (resize_memory(&p, 50))
printf("resize ok");
else
printf("resize fail");
printf("%s", p);
if (NULL != p)
printf("OK\n");
free_and_null(&p);
if (NULL == p)
printf("OK\n");
else
printf("fail\n");
return 0;
}
VC6.0编译通过
~~The END~~
尹曙光