动态内存管理-传值调用错题解析

news2024/11/15 13:33:10

首先我们来看这个错误代码 

 

首先我们看代码逻辑,首先main函数调用test,test接收的是void类型,设置一个指针变量,指向null,传递给get函数,也就是传递一个空指针给getmemory函数,这个函数接收了,然后进行运算。

接下来我们进行分析代码的错误逻辑。

为什么不取地址是错误的呢,

  1. 传递地址(指针的指针): 当你传递 &strstr 的地址)给函数时,你是在告诉函数你想要操作的是 str 变量的内存地址本身。这允许函数直接修改 str 变量的值,或者使用 str 变量的地址进行其他操作。
  2. 传递指针(不取地址): 当你传递 str(指向 char 的指针)给函数时,你是在告诉函数你想要操作的是 str 指向的字符串。函数可以通过 str 指针访问和修改字符串的内容,但不会直接修改 str 指针本身的值。

这样会导致什么情况呢,就是内存销毁的问题,你这个函数传递的时候,传递的是指针,不是指针的地址。那么此时就会产生一种情况那就是,getmemory函数运算结束,这个函数进行了销毁。

因为他调用结束之后,函数会进行销毁,strcpy函数想拷贝到开辟的空间里面,OK!找不到空间了,因为进行了销毁。

什么意思呢,可以理解为,

张三,有一天忙碌完,不想回家了,在公司楼下开了个酒店住进去了,哎,很不错,告诉李四,我住的209房间特别好,你有空可以去试试。第二天李四也累了,那我也去了,我到地方我就记得209房间,但是张三的209房间已经退房了,那我肯定进不去,我非得进去,那就被保安打一顿。

你这里也是这样,你这里 想拷贝字符创,那可以没问题。关键点在于你这里传递的是数值,他不是地址,那数值的话,函数创建了,然后运行结束进行销毁。你自然找不到房间号。你这里要是传递的是空间的地址,那我可以直接去你的地址进行操作拷贝,你也不需要进行返回什么的,哪怕进行销毁了,那也没事。

1.因为这里传参传递的是数值,函数返回的时候进行了函数的销毁,从而导致非法访问

这里的意思 应该是把100个字节放到str里面去 但是传值调用是不行的 会导致有问题

正确的处理应该是什么呢

我们可以把str取地址,传参传的是地址,然后因为本身str已经是指针,我们采取用二级指针的方式进行接收,也就是指向的是指针的地址,

修改为正确代码1

此时就可以完成任务了 

修改为正确代码2

当然 不喜欢二级指针 也可以进行数值的接受 也就是char*

找个数值进行接收,找个数值进行接收,那就是有返回类型,我们采取的返回类型是char*类型,因为这里是拷贝字符串。接收返回值也是一样的。

提示一下,所以其实不传参也是可以的

图解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1545533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

单片机入门到精通:一站式在线学习平台!

介绍:单片机,也称为微控制器(MCU),是一种集成了中央处理器(CPU)、随机存储器(RAM)、只读存储器(ROM)以及输入/输出接口于单一芯片上的微型计算机。…

设计模式学习笔记 - 设计模式与范式 -结构型:2.桥接模式:如何实现支持不同类型和渠道的消息推送系统?

概述 今天学习另外一种结构型模式:桥接模式。桥接模式的代码实现非常简单,但是理解起来稍微优点难度,并且应用场景也比较局限,所以,相对于代理模式来说,桥接模式在实际的项目中并没有那么常用,…

Spring文件配置以及获取

前言 我们都知道很多应用都是有配置文件的,可以对应用的一些参数进行配置,如conf... 本篇我们讲解关于Spring的配置文件以及程序怎么获取其中写入的参数 Spring中的配置文件主要有三种 还有yml和ymal文件 下面我们将介绍关于常用的两种 preoperties 和 yml文件的格式和读取…

2024年适合个人和普通企业用户的阿里云服务器推荐,最低仅需61元1年

现在不论是个人还是企业,只要有建站,做APP,存储数据等需要就需要一台云服务器。通常来说,购买阿里云服务器的用户主要分为三类:一是个人用户,二是普通企业用户,三是对云服务器性能有特殊需求的集…

libVLC 视频缩放

libvlc是一个常用的开源多媒体框架,它可以用来播放和处理各种类型的音频和视频文件。如果想要缩放视频,可以通过libvlc提供的API来实现。 //设置视频的缩放比例。 libvlc_video_set_scale() 以下是如何使用 libVLC 设置视频缩放的基本步骤:…

【研发管理】研发管理规范

研发管理规范 目的定义工作职责产品经理项目经理运维负责人研发负责人研发工程师 基本原则研发过程描述需求分析分析设计研发实现测试验收发布上线线上监控 目的 软件研发相关管理,有效控制技术风险,提高研发和运行质量 定义 包括需求分析、分析设计…

智慧公厕的全域感知、全网协同、全业务融合和全场景智慧赋能

公共厕所是城市的重要组成部分,为市民提供基本的生活服务。然而,传统的公厕管理模式存在诸多问题,如排队等候时间长、卫生状况差、空气质量差等,严重影响市民的出行和生活质量。为了解决这些问题,智慧公厕应运而生&…

WebClient上载文件——实现将本地文件同步到远端服务器上

问题描述 用户上传产品示例图片到服务器端上,客户端在请求图片资源时,当服务端架设了多个节点的情况下,由于没有负载均衡请求到保存图片资源的服务器,出现图片访问404的问题。 这里保存上传文件时,同时需要将该文件保…

【学习心得】神经网络知识中的符号解释

这里我对我学到的神经网络知识中,常见的符号做一下记录和总结,方便自己在后面学习中复习。下图二分类识别图像识别猫为例。为了保存一张图片,需要三个矩阵,它们分别对应图片中的红、绿、蓝三种颜色通道,如果图片大小为…

vitepress builld报错

问题:build时报错:document/window is not defined。 背景:使用vitepress展示自定义的组件,之前build是没有问题了,由于新增了qr-code以及quill富文本组件,导致打包时报错。 原因:vitepress官…

邮件接口与第三方平台的集成的方式有哪些?

邮件接口如何实现高效通信?怎么有效地利用邮件接口? 邮件接口与第三方平台的集成已经成为了企业提升工作效率、优化用户体验的关键环节。那么,邮件接口与第三方平台的集成方式究竟有哪些呢?接下来,AokSend就来探讨一下…

力扣由浅至深 每日一题.15 删除排序链表中的重复元素

没关系的,昨天的暴雨不会淋湿今天的自己 —— 24.3.26 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例 1: 输入:head [1,1,2] 输出…

VR全景展示:传统制造业如何保持竞争优势?

在结束不久的两会上,数字化经济和创新技术再度成为了热门话题。我国制造产业链完备,但是目前依旧面临着市场需求不足、成本传导压力加大等因素影响,那么传统制造业该如何保持竞争优势呢? 在制造行业中,VR全景展示的应用…

markdown 编辑工具Typora的使用

简介 Typora是一款由Abner Lee开发的轻量级Markdown编辑器,它以其简洁美观的界面、实时预览的功能以及强大的Markdown语法支持而受到用户的喜爱。 Typora的编辑方式与众不同,它采用了所见即所得的编辑方式,这意味着用户在输入Markdown语法标…

OpenCV4.9关于矩阵上的掩码操作

返回:OpenCV系列文章目录(持续更新中......) 上一篇:如何使用OpenCV扫描图像、查找表和时间测量 下一篇:OpenCV4.9的是如何进行图像操作 引言: 矩阵上的掩码操作非常简单。这个想法是,我们根据掩码矩阵&#xff08…

简易电路设计,PW1605芯片实现24V/30V/48V限流过压保护功能

一般描述 PW1605 是一款电流限制开关,具有可编程输入过压保护和输出电压箝位功能。集成保护 N 沟道 FET 具有极低的 RDS(ON) 功能,PW1605有助于降低正常工作期间的功率损耗。可编程软启动时间控制启动期间输出电压的压摆率。独立的…

本周四Techtalk技术交流社区邀请吕海波老师为大家带来精彩技术分享

欢迎您关注我的公众号【尚雷的驿站】 **************************************************************************** 公众号:尚雷的驿站 CSDN :https://blog.csdn.net/shlei5580 墨天轮:https://www.modb.pro/u/2436 PGFans:ht…

Docker - 哲学 默认网络和 自定义网络 与 linux 网络类型 和 overlay2

默认网络:不指定 --nerwork 不指定 网络 run 一个容器时,会直接使用默认的网络桥接器 (docker0) 自定义网络:指定 --nerwork 让这两台容器互相通信 的前提 - 共享同一个网络 关于 ip addr 显示 ens160 储存驱动 ov…

智慧公厕,运用大数据提升公共厕所管理水平

在现代社会,科技的发展给我们带来了诸多便利,而智慧公厕就是其中之一。智慧公厕运用数据和技术,提升公共厕所的管理水平,为社会生活服务。本文将以智慧公厕源头实力厂家广州中期科技有限公司,遍布全国的众多标杆性案例…

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载

macOS Sonoma 14.4.1 (23E224) 正式版发布,ISO、IPSW、PKG 下载 2024 年 3 月 26 日凌晨,macOS Sonoma 14.4.1 更新修复了一个可能导致连接到外部显示器的 USB 集线器无法被识别的问题。它还解决了可能导致 Java 应用程序意外退出的问题,并修…