C++ realloc()用法及代码示例
C++ realloc()用法及代码示例
C++ 中的realloc() 函数重新分配先前分配但尚未释放的内存块。
realloc() 函数重新分配先前使用 malloc() 、 calloc() 或 realloc() 函数分配但尚未使用 free() 函数释放的内存。
如果新大小为零,则返回的值取决于库的实现。它可能会也可能不会返回空指针。
realloc()原型
void* realloc(void* ptr, size_t new_size);
该函数在<cstdlib> 头文件中定义。
参数:
- ptr :指向要重新分配的内存块的指针。
- new_size :一个无符号整数值,表示内存块的新大小(以字节为单位)。
返回:
- 指向重新分配的内存块开头的指针。
- 如果分配失败,则为空指针。
- 扩展或收缩同一个块:如果可能,旧指针(即 ptr)指向的内存块被扩展或收缩。内存块的内容保持不变,直到新旧大小中的较小者。如果该区域被扩展,新分配的块的内容是未定义的。
- 搬到新位置: 分配一个大小为new_size 字节的新内存块。在这种情况下,内存块的内容也保持不变,直到新旧大小中的较小者,如果内存扩大,新分配的块的内容是未定义的。
示例 1:realloc() 函数如何工作?
-
#include <iostream> #include <cstdlib> using namespace std; int main() {float *ptr, *new_ptr;ptr = (float*) malloc(5*sizeof(float));if(ptr==NULL){cout << "Memory Allocation Failed";exit(1);}/* Initializing memory block */for (int i=0; i<5; i++){ptr[i] = i*1.5;}/* reallocating memory */new_ptr = (float*) realloc(ptr, 10*sizeof(float));if(new_ptr==NULL){cout << "Memory Re-allocation Failed";exit(1);}/* Initializing re-allocated memory block */for (int i=5; i<10; i++){new_ptr[i] = i*2.5;}cout << "Printing Values" << endl;for (int i=0; i<10; i++){cout << new_ptr[i] << endl;}free(new_ptr);return 0; }
运行程序时,输出将是:
-
Printing Values 0 1.5 3 4.5 6 12.5 15 17.5 20 22.5
示例 2:realloc() 函数,new_size 为零
-
#include <iostream> #include <cstdlib> using namespace std;int main() {int *ptr, *new_ptr;ptr = (int*) malloc(5*sizeof(int));if(ptr==NULL){cout << "Memory Allocation Failed";exit(1);}/* Initializing memory block */for (int i=0; i<5; i++){ptr[i] = i;}/* re-allocating memory with size 0 */new_ptr = (int*) realloc(ptr, 0);if(new_ptr==NULL){cout << "Null Pointer";}else{cout << "Not a Null Pointer";}return 0; }
Null Pointer
示例 3:当 ptr 为 NULL 时的 realloc() 函数
-
#include <iostream> #include <cstdlib> #include <cstring> using namespace std;int main() {char *ptr=NULL, *new_ptr;/* reallocating memory, behaves same as malloc(20*sizeof(char)) */new_ptr = (char*) realloc(ptr, 50*sizeof(char));strcpy(new_ptr, "Welcome to Net188.com");cout << new_ptr;free(new_ptr);return 0; }
Welcome to Net188.com
相关文章:
C++ realloc()用法及代码示例
C realloc()用法及代码示例 C 中的realloc() 函数重新分配先前分配但尚未释放的内存块。realloc() 函数重新分配先前使用 malloc() 、 calloc() 或 realloc() 函数分配但尚未使用 free() 函数释放的内存。如果新大小为零,则返回的值取决于库的实现。它可能会也可能…...
【Go】gin框架生成压缩包与下载文件
在没有加入下面这串代码之前,下载的压缩包一直为空。遂debug了两个小时。。。 可以在服务端本地创建压缩包。单独将服务端本地的压缩包发送给客户端也是没问题的。但是两个合起来,客户端接收到的压缩包内容就为空了。 期间也尝试了 zipFile.Close() zipW…...
iOS 面试题以及自我理解答案
1、简述push原理,push的证书和其他的有什么不一样? 第 一阶段:BeejiveIM服务器把要发送的消息、目的iPhone的标识打包,发给APNS。 第二阶段:APNS在自身的已注册Push服务 的iPhone列表中,查找有相应标识的iP…...
vue实现自定义滚动条
vue实现自定义滚动条 具体效果如下,这边我用的rem单位,比例是1:40, 先写下页面布局,把原生的滚动条给隐藏掉,给自定义的滑块增加transition: marginLeft 1s linear;可以使左边距过度的更顺滑 .top-box-2::-webkit-scr…...
基于Qt C++的工具箱项目源码,含命令行工具、桌面宠物、文献翻译、文件处理工具、医学图像浏览器、插件市场、设置扩展等工具
一、介绍 1. 基本信息 完整代码下载地址:基于Qt C的工具箱项目源码 TBox是一款基于Qt C的工具箱。用户可以自行选择安装所需的工具(以插件的形式),将TBox打造成专属于自己的效率软件。TBox基本界面展示如下: 2. 使用…...
C# AnimeGANv2 人像动漫化
效果 项目 下载 可执行程序exe下载 源码下载 其他 C# 人像卡通化 Onnx photo2cartoon-CSDN博客...
gateway接口参数加解密
上篇介绍了多种加解密的使用java加密使用 本篇主要介绍在gateway网关中使用对参数解密和返回数据进行加密的操作 原理 下面使用的是AES加密 SHA1withRSA加签 1-用户使用拿到的AES秘钥和RSA私钥。对数据进行加密和加签 2-进行验签和时间的检验 3-将解密的数据返回到具体的调用…...
WorkPlus定制化的局域网会议软件,提供安全稳定的会议体验
在现代商业环境中,迅速而高效的沟通是企业成功的关键要素之一。而在传统的会议模式下,时间成本和地理限制往往给企业带来不小的困扰。针对这一问题,WorkPlus推出了一款创新的局域网会议软件——WorkPlus Meet,旨在为企业创造高效的…...
干货|小白也能自制电子相册赶紧码住~
你是否想拥有一个独一无二的电子相册,却又苦于不知道如何下手?今天教你一个简单的方法,即使你是小白,也能轻松自制电子相册! 一、选择合适的工具 首先,你需要选择一个合适的工具来制作电子相册。有很多工具…...
docker之Harbor私有仓库
目录 一、什么是Harbor 二、Harbor的特性 三、Harbor的构成 1、六个组件 2、七个容器 四、私有镜像仓库的上传与下载 五、部署docker-compose服务 把项目中的镜像数据进行打包持久数据,如镜像,数据库等在宿主机的/data/目录下, 一、什么…...
服务器上部署python脚本
1.查看服务器上的python是否自带,一般都自带 2.将本地脚本上传到服务器 3.直接运行一下脚本看报什么错误 代码错误, 将f删除后报别的错误 上面是未安装依赖的错误。我们安装一下依赖 下面是编码的解决 #!/usr/bin/python # -*- coding: utf-8 -*- 先把…...
【excel技巧】如何在Excel表格中添加选项按钮?
不知道大家是否会9遇到需要勾中选项的情况,我们可以在电子表格中制作出可以勾选、选中的选项按钮,今天我们一起学习一下设置方法。 首先,我们需要先在excel工具栏中添加一个功能模块:开发工具 依次点击excel中的文件 – 选项 –…...
前端 vite+vue3——写一个随机抽奖组件
文章目录 ⭐前言⭐设计布局⭐交互设计⭐整体代码⭐insicode代码 ⭐总结⭐结束 ⭐前言 大家好,我是yma16,本文分享关于前端 vitevue3——写一个抽奖随机组件。 vue3系列相关文章: 前端vue2、vue3去掉url路由“ # ”号——nginx配置 csdn新星计…...
语音芯片基础知识 什么是语音芯 他有什么作用 发展趋势是什么
目录 一、语音芯片的简介 常见的语音芯片有哪些? 语音芯片的种类有很多,大体区分下来也就4个类别而已: 选型的经验说明如下: 推荐使用flash型语音芯片 一、语音芯片的简介 语音芯片基础知识: 什么是语音芯片&…...
设计模式01———简单工厂模式 c#
首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 建基础通用包 创建一个Plane 重置后 缩放100倍 加一个颜色 任务:使用【简单工厂模式】生成四种不同怪物 【按不同路径移动】 首先资源商店下载四个怪物模型 接下来我们选取四个怪物作为预制体并分别起名…...
如何解决MidJourney错过付费后被暂停
问题 假定你已经成功订阅购买了 MidJourney 一段时间,下个月扣费周期到了。 如果你卡里余额不足,卡被封或失效了,或者你想着最近没啥用得上 MidJourney 的地方先省着不续费,等要用的时候就用不了。 如果想要去官网的续费页&…...
考研人考研魂——英语单词篇(20231010)
下一站,上岸 transplanttransportstorestoragestockstridestrikestringstructurestrikingstunprimaryprimeprimitiveprincipalpsychiatryprinciplepsychologyliableliberal transplant n. (器官等的)移植;移植的器官 vt. 移植&a…...
java 版 项目管理工程系统,实现项目全周期管理-源码交付
工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&am…...
TOGAF(企业架构)
TOGAF 核心概念(官方原版) 什么是TOGAF? TOGAF?是一种经验证的企业架构方法和框架,被世界领先的组织用于提高业务效率。它是一个企业架构标准,确保企业架构专业人员之间的标准、方法和通信一致,以便我们…...
vue中v-model的原理是什么?v-model作用在组件上的原理是什么?sync修饰符的原理是什么?
vue中v-model的原理是什么? 特点:双向绑定 数据>视图 视图>数据 场景: 收集表单数据组件上 原理: v-model只是个语法题,本质是:v-model v-bind (:value) v-on (input) <template><…...
Unitree Go2机器人ROS2集成完整指南:从零开始掌握智能四足机器人开发
Unitree Go2机器人ROS2集成完整指南:从零开始掌握智能四足机器人开发 【免费下载链接】go2_ros2_sdk Unofficial ROS2 SDK support for Unitree GO2 AIR/PRO/EDU 项目地址: https://gitcode.com/gh_mirrors/go/go2_ros2_sdk 想要让Unitree Go2机器人真正&quo…...
解锁Linux平台微信小程序开发:终极完整环境搭建指南
解锁Linux平台微信小程序开发:终极完整环境搭建指南 【免费下载链接】wechat-web-devtools-linux 适用于微信小程序的微信开发者工具 Linux移植版 项目地址: https://gitcode.com/gh_mirrors/we/wechat-web-devtools-linux 你是否曾为在Linux系统上无法使用微…...
终极解决ComfyUI-Florence2模型加载问题的完整指南
终极解决ComfyUI-Florence2模型加载问题的完整指南 【免费下载链接】ComfyUI-Florence2 Inference Microsoft Florence2 VLM 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-Florence2 如果您正在使用ComfyUI-Florence2视觉语言模型却遇到了加载失败的问题&#…...
RyTuneX深度实战:Windows系统性能调优与隐私保护最佳实践
RyTuneX深度实战:Windows系统性能调优与隐私保护最佳实践 【免费下载链接】RyTuneX RyTuneX is a cutting-edge optimizer built with the WinUI 3 framework, designed to amplify the performance of Windows devices. Crafted for both Windows 10 and 11. 项目…...
MCP3208 SPI驱动开发:嵌入式多通道12位ADC实战指南
1. MCP3208 ADC驱动库深度解析:面向嵌入式工程师的SPI模数转换实战指南MCP3208是Microchip公司推出的8通道、12位分辨率、逐次逼近型(SAR)模数转换器,采用标准四线SPI接口通信,支持单端与差分输入模式,工作…...
ARMv8-A架构革命——超越64位寻址的三大范式转移
该文章同步至公众号OneChan 开篇:回答上篇进阶思考 在上一篇的结尾,我们留下了三个问题,现在让我们逐一探讨: 1. 从A53到A55再到A510,ARM的小核设计哲学如何演变? Cortex-A53 (2014):定义了“…...
DLSS Swapper完全指南:5步实现游戏性能自由切换
DLSS Swapper完全指南:5步实现游戏性能自由切换 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏更新后DLSS版本不兼容导致帧率下降而烦恼?是否想要尝试新版本DLSS功能却发现手动替…...
RecyclerListView测试终极指南:单元测试与集成测试完整解决方案
RecyclerListView测试终极指南:单元测试与集成测试完整解决方案 【免费下载链接】recyclerlistview High performance listview for React Native and web! 项目地址: https://gitcode.com/gh_mirrors/re/recyclerlistview RecyclerListView是一个专为React …...
VibeVoice API接口调用案例:WebSocket流式通信实测
VibeVoice API接口调用案例:WebSocket流式通信实测 1. 项目概述 VibeVoice 是一个基于微软开源模型的实时语音合成系统,能够将文本内容快速转换为高质量的语音输出。这个系统特别适合需要实时语音交互的应用场景,比如语音助手、有声读物制作…...
开源硬件监控新选择:LibreHardwareMonitor全方位解析与应用指南
开源硬件监控新选择:LibreHardwareMonitor全方位解析与应用指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor is free software that can monitor the temperature sensors, fan speeds, voltages, load and clock speeds of your computer. 项…...
