C语言 我是初学者

1)realloc和malloc/calloc在申请空间的方式上是相同,申请空间的内存区域也是一样的(堆区间),所以都有可能失败。失败的原因有可能是内存不足,也有可能是申... 1)realloc和malloc/calloc在申请空间的方式上是相同,申请空间的内存区域也是一样的(堆区间),所以都有可能失败。失败的原因有可能是内存不足,也有可能是申请的空间大于一个段地址所能容纳的最大数据量(比如偏移址是4个十六进制,那么一个段地址所能容纳的数据就是2^16bytes)
2)写法不同而已,malloc (sizeof_t *n),calloc (sizeof_t t,sizeof_n)结果是一样的,但是realloc则可能涉及到内容复制,所以尽可能少用。使用alloc函数后要记得free,避免memory leak
3)有,测试方法:printf ("%p",NULL),但是他不属于任何类型,不能试图改变NULL的指向和数值。

这是别人说的 我有点不懂 真心初学者 望细心回答
1 堆区间是什么?
2 比如偏移址是4个十六进制,那么一个段地址所能容纳的数据就是2^16bytes 为什么是2^16?
展开
 我来答
百度网友992aed3
2014-02-24
知道答主
回答量:13
采纳率:0%
帮助的人:22.4万
展开全部
(1)C语言里面的动态存储区分为堆区和栈区。
堆区是由程序员自行分配与释放,分配时使用alloc函数,释放时使用free函数。
栈区是系统自行使用与释放,无需程序员干预,只要栈不溢出就行。
(2)4个十六进制,也就是从0x0000到0xFFFF
。换句话说就是16个二进制位,从0000 0000 0000 0000至1111 1111 1111 1111 1111
空间容量就是2^16Byte(字节)。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式