新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言 动态内存管理

发布时间:2026/9/10 0:56:45来源:尧图网络
C语言 动态内存管理
malloc 函数开辟 size 个字节的空间返回指向这个空间起始地址的地址指针类型是泛型指针如果开辟空间失败返回NULL。void* malloc (size_t size);free函数释放动态内存开辟的内存空间。void free (void* ptr);errno函数获取错误信息。strerror函数 将 errno 转换为可读的错误信息进行输出。注意动态申请的空间是在堆区申请的如果不主动释放空间程序结束时系统会自动回收动态开辟的空间。malloc例子#includestring.h #includestdlib.h #include errno.h int main() { int* p1 (int*) malloc(sizeof(int)*10); if (p1 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { *(p1 i) i; printf(%d , *(p1 i)); } free(p1); p1 NULL; return 0; }释放完内存后为了野指针被误用要把指针置为NULL。calloc函数为 num个大小为size的元素分配内存空间并将所有位初始化为零。开辟成功返回开辟空间的起始地址如果开辟失败返回NULL。void* calloc (size_t num, size_t size);calloc例子int main() { int* p2 (int*)calloc(10, sizeof(int)); if (p2 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { printf(%d , *(p2 i)); } free(p2); p2 NULL; return 0; }realloc函数调整动态开辟的内存空间。void* realloc (void* ptr, size_t size);参数ptr :指向一个要重新分配内存的内存的指针。如果为空指针则会分配一个新的内存块且函数返回一个指向它的指针。size:内存块的新的大小以字节为单位。realloc函数的特点(1) 后面空间不够大重新开辟一块空间把旧空间的数据copy到新空间释放旧的空间返回新的空间的地址。int*ptr(int*)realloc(p3, 80);(2) 后面空间足够大在原来空间的后面追加空间。int*ptr(int*)realloc(p3, 8000);realloc例子int main() { int* p3 (int*)malloc(40); if (p3 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { *(p3 i) i; } int*ptr(int*)realloc(p3, 80); if (ptr ! NULL) { p3 ptr; } for (i 0; i 20; i) { *(p3 i) i; printf(%d , *(p3 i)); } free(p3); p3 NULL; return 0; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

danswer Craft:Docker 沙箱从逐消息 ACP 执行迁移到 opencode serve 长驻 HTTP 传输 2026/9/10 0:55:52

danswer Craft:Docker 沙箱从逐消息 ACP 执行迁移到 opencode serve 长驻 HTTP 传输

danswer Craft:Docker 沙箱从逐消息 ACP 执行迁移到 opencode serve 长驻 HTTP 传输 【免费下载链接】danswer Open Source AI Platform - AI Chat with advanced features that works with every LLM 项目地址: https://gitcode.com/GitHub_Trending/da/danswer …

阅读更多 →
开题报告卡住了?毕夏AI正在把“开题”从“孤军奋战”变成“有导航的学术之旅” 2026/9/10 0:55:52

开题报告卡住了?毕夏AI正在把“开题”从“孤军奋战”变成“有导航的学术之旅”

毕夏AI官网 www.bixiaai.com 毕夏AI写作官网 www.bixiaai.com 毕夏官网 www.bixiaai.com 毕夏智能写作官网 www.bixiaai.com 各位同学,今天我们来聊一个很多论文写作者的“心理阴影”——开题报告。 你有没有经历过这样的场景:选题方向有了&#…

阅读更多 →
Linux 内核 Ramoops 持久化 Oops/Panic 日志机制完全指南 2026/9/10 0:55:52

Linux 内核 Ramoops 持久化 Oops/Panic 日志机制完全指南

Linux 内核 Ramoops 持久化 Oops/Panic 日志机制完全指南 【免费下载链接】linux Linux kernel source tree 项目地址: https://gitcode.com/GitHub_Trending/li/linux 本指南系统讲解 Linux 内核中 ramoops(RAM Oops/Panic logger)的完整原理与实…

阅读更多 →
xiaozhi-esp32 M5Stack AtomS3R + Echo Base 固件构建实战:build.py 快速打包、手动 menuconfig 配置与合并固件烧录 2026/9/10 0:55:52

xiaozhi-esp32 M5Stack AtomS3R + Echo Base 固件构建实战:build.py 快速打包、手动 menuconfig 配置与合并固件烧录

xiaozhi-esp32 M5Stack AtomS3R Echo Base 固件构建实战:build.py 快速打包、手动 menuconfig 配置与合并固件烧录 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-…

阅读更多 →
二关节机械臂计算力矩控制Simulink仿真程序详解 2026/9/10 0:55:52

二关节机械臂计算力矩控制Simulink仿真程序详解

简介:面向机器人控制学习者与工程技术人员的二关节机械臂计算力矩控制Simulink仿真程序,基于逆动力学模型实时求解关节驱动力矩,实现末端轨迹的高精度跟踪控制。压缩包一共包含11个文件,其中有2个slx仿真模型(分别对应…

阅读更多 →
llama-factory导出gemma-3模型踩坑全解析:从显存不足到路径冲突的12个修复方案 2026/9/10 0:52:51

llama-factory导出gemma-3模型踩坑全解析:从显存不足到路径冲突的12个修复方案

我在实际用 llama-factory 微调 gemma-3-12b-instruct 时,遇到过最折腾的一步不是训练本身,而是最后那个“导出模型”。训练流程走通、loss 降得挺漂亮、checkpoint 也正常保存,但一点导出按钮,各种报错就冒出来了:有说…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞