/***************************************
function:代码范例,malloc,free
author : cinience@gmail.com
****************************************/
const int memsize 1024;
char * p = NULL; // 指针声明时,即初始化
p = (char *)malloc(memsize);
assert ( NULL != p); // 若要求不严格,可用if代替
memset(p,0,memsize);
/**
code;
**/
if ( NULL != p ) // 不再使用,释放空间,并赋NULL
{
free(p);
p = NULL;
}
讨论:
1:关于delete p和 delete []p;
看了很多资料,有的说,后者可以替代前者,从理论上分析也是
但为了不必要的错误,和程序的严谨性,我们应该遵循:
new 对应 delete
new[] 对应 delete[]
2,关于 malloc(0);
malloc(0)得到的是有效指针还是NULL都是不确定的
,而且分配成功也不要使用,所以慎用
C99标准(ISO/IEC 9899:1999 (E))上说:
If the size of the space requested is zero, the behavior is implementationdefined:
either a null pointer is returned, or the behavior is as if the size were some
nonzero value, except that the returned pointer shall not be used to access an object.