形参动态内存开辟和柔性数组
//柔性数组
//定义:结构体最后一个成员允许是未知大小的数组
// 优点;在开辟空间时,连续开辟,便于释放空间,不会因多次开辟,导致释放空间出错
// 开辟空间时,节省动态开辟次数,节省空间,提升内存空间利用率,减少内存碎片
// 访问效率更高
//
//
struct S
{
int n;
int* arr;//指针大小随系统 4/8 个字节
};
int main()
{
struct S* ps = (struct S*)malloc(sizeof(struct S));
ps->arr = (int*)malloc(5 * sizeof(int));//给指针arr单独开辟一个空间
int i = 0;
for (i = 0; i < 5; i++)
{
ps->arr[i] = i;
}
for (i = 0; i < 5; i++)
{
printf("%d ", ps->arr[i]);
}
//调整大小
int* ptr = (int*)realloc(ps->arr, 10 * sizeof(int));
if (ptr != NULL)
{
ps->arr = ptr;
}
for (i = 5; i < 10; i++)
{
ps->arr[i] = i;
}
for (i = 0; i < 10; i++)
{
printf("%d ", ps->arr[i]);
}
//释放
free(ps->arr);//先释放指针内的指针指向的空间
ps->arr = NULL;
free(ps);//再释放指针
ps = NULL;
return 0;
}
struct s
{
int n;//柔性数组成员前必须至少有一个其他成员
int arr[];//柔性数组成员,大小可以调整,计算sizeof时不算在内的,用malloc来分配其大小
};
int main()
{
struct s* ps = (struct s*)malloc(sizeof(struct s) + 5 * sizeof(int));//24个字节的空间
//struct s 的大小为4个字节,剩余的20个字节分配给柔性数组成员,连续开辟的空间
ps->n = 100;
int i = 0;
for (i = 0; i < 5; i++)
{
ps->arr[i] = i;//0 1 2 3 4
}
struct s* ptr = (struct s*)realloc(ps, 44);
if (ptr != NULL)
{
ps = ptr;
}
for (i = 5; i < 10; i++)
{
ps->arr[i] = i;
}
for (i = 0; i < 10; i++)
{
printf("%d ", ps->arr[i]);
}
//释放
free(ps);
ps = NULL;
return 0;
}
void getmemory(char* p)
void getmemory(char** p)
{
*p = (char*)malloc(100);
//p = (char*)malloc(100);//没有free 形参p开辟的动态空间,且无法找到,导致内存泄漏
}
void test(void)
{
char* str = NULL;
//getmemory(str);//此时传的是值,p不能改变str的内容
getmemory(&str);
strcpy(str, "hello world");//此时拷贝指向的是空指针,解引用NULL,拷贝失败,程序崩溃
printf(str);
free(str);
str = NULL;
}
char* getmemory(void)
{
char p[] = "hello world";
return p;//返回栈空间地址,内容已销毁
}
void test(void)
{
char* str = NULL;
str = getmemory();
printf(str);
}
int main()
{
test();
return 0;
}
相关文章:
形参动态内存开辟和柔性数组
//柔性数组 //定义:结构体最后一个成员允许是未知大小的数组 // 优点;在开辟空间时,连续开辟,便于释放空间,不会因多次开辟,导致释放空间出错 // 开辟空间时,节省动态开辟次数,节省空间&am…...

【LLM系列之指令微调】长话短说大模型指令微调的“Prompt”
1 指令微调数据集形式“花样”太多 大家有没有分析过 prompt对模型训练或者推理的影响?之前推理的时候,发现不加训练的时候prompt,直接输入模型性能会变差的,这个倒是可以理解。假如不加prompt直接训练,是不是测试的时…...

MacOS使用brew如何下载Nginx
首先,第一步切换源: 切换 brew.git 仓库地址: cd "$(brew --repo)" git remote set-url origin https://mirrors.aliyun.com/homebrew/brew.git 替换 homebrew-core.git 仓库地址: cd "$(brew --repo)/Library/Taps/home…...
linux ftp
使用ftp连接本机进行文件传输 1、下载vsftpd服务器程序 apt install vsftpd 2、使用tcp抓包 tcpdump -nt -i lo port 20 在FTP连接到本地主机(127.0.0.1)时,数据可能通过本地回环接口(loopback interface)传输&…...

你知道HTTP与HTTPS有什么区别吗?
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是HTTP? 二、什么是HTTPS? 三、HTTPS 的工作原理 1、客户端发起 HTTPS 请求 2、服务端的配置 3、…...

keil使用printf函数重定串口输出,程序卡在Reset_Handler
最近在做国产芯片GD32F103项目,使用printf()函数重定向USART0串口输出,发现程序没有运行,单步调试发现,程序卡在startup_gd32f10x.s文件的Reset_Handler处,记录一下解决方法。 解决办法: 1、引用头文件#in…...
Redis预热 雪崩 击穿 穿透
redis预热 在Redis中,预热是指在实际的负载之前,提前将数据加载到内存中,以便在请求到来时能够快速响应。预热可以减少冷启动时的延迟,并提高系统的性能。 有几种方法可以进行Redis的预热: 使用持久化机制࿱…...

Shell脚本学习-MySQL单实例和多实例启动脚本
已知MySQL多实例启动命令为: mysqld_safe --defaults-file/data/3306/my.cnf & 停止命令为: mysqladmin -uroot -pchang123 -S /data/3306/mysql.sock shutdown 请完成mysql多实例的启动脚本的编写: 问题分析: 要想写出脚…...

vue3搭建(vite+create-vue)
目录 前提条件 输入命令 对于Add an End-to-End Testing Solution nightwatch和Cypress 和 Playwright 运行 前提条件 熟悉命令行已安装 16.0 或更高版本的 Node.js (node -v查看版本) 输入命令 npm init vuelatest 这一指令将会安装并执行 create-…...

服务器中了360后缀勒索病毒怎么解决,360后缀勒索病毒解密数据恢复
某医药公司是一家小型企业,拥有自己的服务器存储重要数据和文件。某天早上,IT管理员发现企业服务器中了360后缀的勒索病毒,所有数据文件都被加密了。这个病毒的入侵让公司业务受到严重影响,企业立即启动了勒索病毒解密数据恢复的措…...

3000字详解:风控核心岗位及核心价值
01、信贷场景中所谓风控是什么? 从一个小故事说起: “风控是什么?” “你走过大桥么?” “桥上有栏杆么?” “有” “你过桥时会扶栏杆么” “一般不扶” “那栏杆是不是没必要有呢” “那还是得有啊…...

fiddler 手机抓包(含https) 完整流程
第一部分:下载并安装fiddler 一.使用任一浏览器搜索【fiddler下载安装】,并下载fiddler 安装包。 二.fiddler安装包下载成功后,将下载的fiddler压缩包解压到自定义文件夹【fiddler】或者解压到当前文件夹下,双击文件夹中的【fidd…...

ChatGPT学python——制作自己的AI模型(一)初步了解
前言 「作者主页」:雪碧有白泡泡 「个人网站」:雪碧的个人网站 「推荐专栏」: ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄,vue成神之路★ ★ 解决算法,一个专栏就够了★ ★ 架…...

多赛道出海案例,亚马逊云科技为企业提供全新解决方案实现高速增长
数字化浪潮之下,中国企业的全球化步伐明显提速。从“借帆出海”到“生而全球化”,中国企业实现了从低端制造出口,向技术创新和品牌先导的升级。为助力中国企业业务高效出海,亚马逊云科技于2023年6月9日在深圳大中华喜来登酒店举办…...

异步消息传递技术 JMS AMQP MQTT
广泛使用的三种异步消息传递技术:JMS AMQP MQTT JMS AMQP MQTT JMS(Java Message Service):一个类似JDBC的规范,提供了与消息服务相关的API接口 JMS消息模型: P2P 点对点模型:消息发到一个队…...
利用Python实现汉译英的三种方法
一、前言 有道翻译API(主要推荐) 百度翻译API(需要申请key与密钥,每月100万免费字符) 谷歌翻译API(需要梯子,而且不稳定,不推荐) 二、代码 1、判断文本是否存在中文…...

磁盘均衡器:HDFS Disk Balancer
HDFS Disk Balancer 背景产生的问题以及解决方法 hdfs disk balancer简介HDFS Disk Balancer功能数据传播报告 HDFS Disk Balancer开启相关命令 背景 相比较于个人PC,服务器一般可以通过挂载多块磁盘来扩大单机的存储能力在Hadoop HDFS中,DataNode负责最…...

蔚小理新势力互联网造车在CAN FD硬件主框架及后装控制方案开发
在国内,新势力造车影响已经非常之大,整个造车大潮中,新整车企业蔚来汽车、小鹏汽车、理想汽车无一例外选择了CAN FD作为主要的车载通信总线,特斯拉推出了引领汽车EE架构集中化的趋势,即使在车载以太网EE架构快速发展的…...

左叶子之和
404. 左叶子之和 简单(有点意思 第一次我也写错了 先自己递归去写 如果不行看答案 我感觉还是蛮不错的) 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15…...

Java版知识付费平台免费搭建 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台qt
Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含:录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署,免费售…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化
iOS 应用的发布流程一直是开发链路中最“苹果味”的环节:强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说,这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发(例如 Flutter、React Na…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
[特殊字符] Spring Boot底层原理深度解析与高级面试题精析
一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配,通过简化传统Spring应用的初始化和配置流程,显著提升开发效率。其底层原理可拆解为以下核心机制: 自动装配(Auto-Configuration) 核…...