当前位置:网站首页>C陷阱与缺陷 第7章 可移植性缺陷 7.10 首先释放,然后重新分配
C陷阱与缺陷 第7章 可移植性缺陷 7.10 首先释放,然后重新分配
2022-08-01 21:00:00 【weixin_客子光阴】
首先释放,然后重新分配
C语言实现都为使用人员提供了3个内存分配函数:malloc、realloc和free。malloc(n)将返回一个指针,指向一块新分配的可以容纳n的字符的内存,编程人员可以使用这块内存。free将释放malloc分配的内存,方式是通过把malloc函数返回的指针作为参数传递给free函数。realloc需要把指向一块内存已分配内存的区域指针以及这块内存新的大小作为参数传入,就可以调整(扩大或缩小)这块内存区域为新的大小,这个过程中有可能涉及内存的复制。
内存重分配(reallocation)
这一实现允许某内存块被释放之后重新分配其大小,前提是内存重分配(reallocation)操作执行得必须足够早。(UNIX)
例如,下面的代码就是合法的:
free(p);
p = realloc(p, newsize);
释放一个链表中的所有元素:
for (p = head; p != NULL; p = p->next) {
free((char *)p)
}
这里,我们不必担心调用free之后,会使p->next变得无效当着,这种技巧不值得推荐。(有可能在其它系统上失败)
边栏推荐
猜你喜欢

Convolutional Neural Network (CNN) mnist Digit Recognition - Tensorflow

面试突击70:什么是粘包和半包?怎么解决?

外骨骼机器人(七):标准步态数据库

To promote energy conservation institute 】 【 the opinions of the agricultural water price reform

宝塔搭建PESCMS-Ticket开源客服工单系统源码实测

Pytorch框架学习记录9——非线性激活

Internet使用的网络协议是什么

98. Embedded controller EC actual combat EC development board development completed

使用百度EasyDL实现厂区工人抽烟行为识别

30+的女性测试人面试经验分享
随机推荐
进行交互或动画时如何选择Visibility, Display, and Opacity
Application of Acrel-5010 online monitoring system for key energy consumption unit energy consumption in Hunan Sanli Group
织梦模板加入php代码
系统收集集
Fork/Join线程池
OSG笔记:设置DO_NOT_COMPUTE_NEAR_FAR,手动计算远近平面
STAHL touch screen repair all-in-one display screen ET-316-TX-TFT common faults
tiup mirror grant
案例:MySQL主从复制与读写分离
数据库内核面试中我不会的问题(1)
Godaddy域名解析速度慢问题以及如何使用DNSPod解析解决
列表页常见的 hook 封装
织梦发布文章提示body has not allow words错误
【Kaggle】House Prices
C专家编程 第1章 C:穿越时空的迷雾 1.2 C语言的早期体验
密码学的基础:X.690和对应的BER CER DER编码
徒步,治好了我的精神内耗
那些关于DOM的常见Hook封装(二)
Remove 360's detection and modification of the default browser
【Kaggle】Classify Leaves