ghosTzone
main(_){return _} && echo $? /* Keep It Simple Stupid | 本博客所有文章皆为原创 转载请注明 - ghosTM55 */

判断是否正确分配内存

ghosTM55 posted @ 2008年11月22日 01:49 in C/C++ , 2232 阅读

  在使用malloc进行内存分配时,由于一些原因(比如内存不够)而导致内存分配失败后,malloc函数将返回一个值为NULL的指针。所以,在每次分配完内存后,对其成功性进行验证非常有必要:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    long *pArray=(long *)malloc(1000000*sizeof(long));
    if(pArray==NULL)
    {
        printf("Memory allocation failure :(\n");
        exit(1);
    }
    else
    {
        printf("Memory allocation success :),%u\n",pArray);
        free(pArray);
        exit(0);
    }
}

  运行结果:
Memory allocation success :),3082084360

  如果再多分配一些内存,就会失败:
Memory allocation failure :(

  可是,当我这样分配内存时,它却成功了:
long *pArray=(long *)malloc(1000000000000000000000000000*sizeof(long));

  至于为什么以及如何改进,就留给大家自己思考了。

txi@ghosTunix.org:~> date
2008年 07月 08日 星期二 16:35:38 CST


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter