malloc的内存分配之 malloc(0)的内存分配情况
来源:互联网 发布:手机看股软件 编辑:程序博客网 时间:2024/05/21 17:33
#include<iostream>using namespace std;int main(){ char *p; if((p=(char *)malloc(0))==NULL) puts("got a null pointer"); else puts("got a valid pointer"); }
答案:got a valid pointer
首先:
在标准的malloc实现中,并不检查输入值的大小,而是将输入值做对齐操作后直接从堆上分配空间。
其次:
不论输入值的大小为多少,在malloc的内部最小的内存分配大小是一个定值(一般是8B),因为malloc需要用这部分空间来维护堆上的内存块链表。所以当用户申请一块0B的空间时,malloc实际分配的空间是8B,如果用户申请的空间是X,则malloc实际分配的空间是(对齐(X) + 8)。这也是为什么malloc分配的空间千万不能越界使用的原因:堆的内部链表结构将被破坏。
另外对于new和delete malloc和free这样的内存分配与释放函数:到底delete和free是怎么知道要释放掉多少内存的呢?
其实在new和malloc内存分配成功时,系统除了返回一个指向这块内存的指针外,还会获得一块用于记录此处分配的内存大小的内存块:
转载自:http://www.cnblogs.com/this-543273659/archive/2011/08/03/2126153.html
0 0
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- [转] malloc的内存分配之 malloc(0)的内存分配情况
- malloc(0)的内存分配情况
- malloc 分配内存的具体细节
- _alloc/malloc/calloc 内存分配的区别
- 指针数组的malloc分配内存例子
- malloc与HeapAlloc分配的内存
- malloc分配的内存是否连续
- Malloc是如何分配内存的?
- 二维指针的malloc内存分配
- 关于malloc实际分配内存的探讨
- 爬虫训练营-基础之模拟请求
- Ubuntu 15.10 程序“java”已包含在下列软件包中,安装jdk1.8.73
- 2016蓝桥杯算法训练——2的次幂表示
- 关于List子类调用subList(int from,int end)出现类型转换异常
- 转载:如何用数据驱动产品和运营
- malloc的内存分配之 malloc(0)的内存分配情况
- C#中sleep和wait的区别分析
- POJ-2299- Ultra-QuickSort-树状数组离散化
- NSCopy与NSMutableCopy技术点
- Android wifi无线调试App新玩法ADB WIFI
- (有码)NSURLConnection大文件下载
- Oracle 回滚(ROLLBACK)和撤销(UNDO)
- Payback--贪心
- source insight 快捷键