2 baidu 25298443 baidu_25298443 于 2016.03.06 17:36 提问

C语言内存分配malloc导致的程序退出

char *p;
while (1) {
p = malloc(1);
*p = 0;
}

这样写最后是因为没有内存退出还是向0写入退出?怎么感觉是内存完了

3个回答

oyljerry
oyljerry   Ds   Rxr 2016.03.06 18:21
已采纳

内存分配失败就会返回空指针

bealing
bealing   Rxr 2016.03.06 18:17

堆内存被使用完后,在申请就睡失败,p就是NULL,即地址为0写入,而这个地址是受程序保护的,无法写入因此退出

atinghaodea
atinghaodea   2016.03.06 18:00

个人觉得你这个应该是会导致堆内存不够,导致程序异常退出

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
模拟实现c语言中的动态内存分配malloc函数
动态存储器分配器维护着一个进程的虚拟的存储器区域,称为堆(heap)。分配器将堆视为一组不同大小的块的集合来维护。每个块就是一个连续的虚拟存储器片(chunk),要么是已经分配的,要么是空闲的。 我们这里把内存堆空间模拟为一个字节数组buf[1000],块的数据结构为: typedef struct HeadStruct{      size_t size;      void *buf;
C语言的内存分配malloc和释放free(32)
C语言的内存分配malloc和释放free :/**//************************************************************ Copyright (C), 1998-2006, Rx. Co., Ltd. FileName: mainApp.cpp Author: longronglin Version : 1.0 Date: 2006-10
高质量的c/c++编程有关malloc分配内存不足的问题
如果在申请动态内存时找不到足够大的内存块,malloc 和new 将返回NULL 指针, 宣告内存申请失败。通常有三种方式处理“内存耗尽”问题。 (1)判断指针是否为NULL,如果是则马上用return 语句终止本函数。例如: void Func(void) { A *a = new A; if(a == NULL) { return; } … } (2)判断指针是否为NU
C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存
1、malloc概述 2、malloc实现 3、malloc实际分配的内存 4、malloc、free实现
C语言的内存分配malloc()和free()
C语言的内存分配malloc()和free() 引言静态数据在程序载入内存时分配,而且自动变量的数据在程序执行块时分配,并在程序离开该块时销毁。另外,C语言可以在程序运行时分配更多的内存。比如说,你做一个通讯录,但是你不能确定到底有多少人需要存储,因此你就不能确定具体需要多少内存空间,因此你可以使用动态内存分配来解决这个问题,即有一个数据需要存储的时候再分配内存给它,这
关于c语言内存分配,malloc,free,和段错误,内存泄露
1.   C语言的函数malloc和free  (1) 函数malloc和free在头文件中的原型及参数        void * malloc(size_t size) 动态配置内存,大小有size决定,返回值成功时为任意类型指针,失败时为NULL。        void  free(void *ptr) 释放动态申请的内存空间,调用free()后ptr所指向的
C语言内存分配函数malloc——————【Badboy】
C语言中常用的内存分配函数有malloc、calloc和realloc等三个,其中,最常用的肯定是malloc,这里简单说一下这三者的区别和联系。   1、声明   这三个函数都在stdlib.h库文件中,声明如下:   void* realloc(void* ptr, unsigned newsize);   void* malloc(unsigned size);   void* c
go语言内存分配之TCMalloc
tcmalloctcmalloc 优点 速度更快,比glicbc 2.3 快 占用更少的内存空间,8倍8-byte的对象内存分配中占用大约8N*1.01byte的头空间,而ptmalloc则会占用16N*byte的头空间 使用 在程序中只需使用“-ltmalloc”连接标识将其链接到程序中 综述 TCMalloc为每一个线程分配本地缓存,以满足小对象分配的需求,当需要时候,对象从中央数据结构移动到本
Linux-(C/C++)动态内存分配malloc以及相关学习
1、C/C++内存分类(引用C++ Primer )(对象在C语言中可以理解为变量)    1.1、静态内存:静态内存用来保存局部static对象、类static数据成员、以及定义在任何函数之外的变量    1.2、栈内存:栈内存用来保存定义在函数内非static对象。(当然包含函数参数开辟的内存)    1.3、动态内存:每个程序还有一个内存池,这部分内存被称作自由空间(free stor
malloc内存分配过程详解
说起malloc,但凡对C/C++有点基础的人在编写代码的时候都用过。我们调用malloc接口分配一段连续的内存空间,不使用时使用free可以释放这段内存空间。这些我们都已经比较的熟悉了。但是你知道malloc背后的调用机制吗?      C语言程序员都知道,malloc只是C语言库标准提供的一个普通函数,我们实现的malloc和库函数比起来效率要低很多,但是可以通过编写一个简单的malloc来