c++83 结构体深copy与浅copy

news2024/9/21 8:04:36

c

typedef struct Teacher
{
	char name[64];
	int age;
	char* pname2;//结构体里套用指针
}Teacher;


void copyTeacher(Teacher* to, Teacher* from)
{
	//*to = *from;
	memcpy(to, from, sizeof(Teacher));//完成一次copy 同理t2释放内存
}
void main()
{
	Teacher t1;
	Teacher t2;


	strcpy(t1.name, "name1");
	t1.pname2 = (char*)malloc(100);
	strcpy(t1.pname2, "ssss");
	//t1 copy t2
	copyTeacher(&t2, &t1);
	if (t1.pname2 != NULL)
	{
		free(t1.pname2);
		t1.pname2 = NULL;
	}

	if (t2.pname2 != NULL)
	{
		free(t2.pname2);//触发断点
		t2.pname2 = NULL;
	}
}

在这里插入图片描述
两个指针变量指向同一个内存空间 编译器的=操作只会copy指针的值不会copy指针指向的内存数据 从from 拷贝到to
在这里插入图片描述

typedef struct Teacher
{
	char name[64];
	int age;
	char* pname2;//结构体里套用指针
}Teacher;


void copyTeacher(Teacher* to, Teacher* from)
{
	*to = *from;//把指针变量copy过去
	//memcpy(to, from, sizeof(Teacher));//完成一次copy 同理t2释放内存
	to->pname2 = (char*)malloc(100);//copy数据过去
	strcpy(to->pname2, from->pname2);//显示内存空间则可以释放了两次
}
void main()
{
	Teacher t1;
	Teacher t2;


	strcpy(t1.name, "name1");
	t1.pname2 = (char*)malloc(100);
	strcpy(t1.pname2, "ssss");
	//t1 copy t2
	copyTeacher(&t2, &t1);
	if (t1.pname2 != NULL)
	{
		free(t1.pname2);
		t1.pname2 = NULL;
	}

	if (t2.pname2 != NULL)
	{
		free(t2.pname2);//触发断点
		t2.pname2 = NULL;
	}
} 

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

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

相关文章

机器视觉-2 缺陷检测常见场景与常用检测方法

目录 目录 一、缺陷检测常见场景 二、缺陷检测常用方法 1. 单调背景 方法1: 阈值分割 方法2: 差分法 2. 规则纹理背景 方法1: 模板匹配 方法2: Gabor滤波器 方法3:傅里叶变换 3. 无规则图像 方法1: 边缘检测 轮廓检测 方法2: 图像分割(如Watershed算法&…

PHP 全攻略:从环境搭建到实战项目的深度探索

一、引言 PHP(Hypertext Preprocessor)是一种广泛应用于 Web 开发的服务器端脚本语言。它具有简单易学、功能强大、开源免费等特点,被众多开发者和企业所青睐。本文将详细介绍 PHP 的开发环境搭建、基本语法格式、变量与变量作用域、常量与数…

将Keil工程文件移植到VScode+Platformio环境下

1创建工作空间 1.1创建PIO工程 若弹出报错不用管他(装加密软件的电脑会报错并少创建几个文件)。PIO会在我们选定的文件夹下创建名为Name(Project)的文件夹 打demo/Project文件夹可以看到生成一堆文件 1.2创建CubeMX工程 网上很多…

【推荐】领导说Java线程池都用不好,明天不要来了?

引言 工作中难免会遇到各种并发场景,笔者先后经历的公司中,很多同事或多或少都用到过Java线程池来实现并发处理。 但线程池用的好的,却没几个。笔者也曾排查过线上问题,有几次,都是因为线程泄漏,导致出现…

无主灯设计:点亮空间美学的现代之选

在这个追求个性化与舒适度并重的时代,家居照明已不再是简单的照明需求,它逐渐演变为营造空间氛围、彰显居住者品味的重要元素。无主灯设计,作为现代照明设计的一种流行趋势,以其灵活多变、层次丰富、光线柔和的特点,赢…

《黑神话:悟空》中的AI技术运用

2024年8 月 20 日,《黑神话:悟空》全球同步上线,作为首个国产 3A 游戏, 1. A lot of money:大量资金 2. A lot of resources:大量资源 3. A lot of time:大量时间 一、悟空中的AI技术 《‌黑…

oracle exadata x8-2 crs有报错PRVG-12885

PRVG-12885 处理办法: Output from # dcli -l root -g dbs_group ip addr list | grep ib shows that all MTU sizes are 65520 Output from # ifconfig -a shows that the MTU size for the loopback interface was 16436 临时办法: Set the mtu…

vue-admin-template pan版使用方法

新建文件夹,创建后端子文件夹,使用命令行创建django后端:django-admin startproject 后端名称 首先下载vue-admin-template-master文件,将其复制进项目的前端文件夹,在命令行中切换到前端目录,执行npm ins…

特征工程-数据处理

一、读取数据 import pandas as pd import numpy as npdf pd.read_csv(E:/workspace/dataset/WA_Fn-UseC_-Telco-Customer-Churn.csv) df.head()字段解释: 二、数据质量探索 1、去重分析 df1 df.copy()# 判断是否存在重复 df1[customerID].nunique() df1.shape[…

性能飞跃!18种大模型指令调优技巧大放送,打造更强LLM!

指令调优(IT),一种针对大型语言模型(LLMs)的训练方法,是提高大型语言模型能力和可控性的关键技术。该方法的核心目标是使LLM具备遵循自然语言指令并完成现实世界任务的能力。它弥补了LLM的下一个单词预测目…

[Meachines] [Easy] BoardLight Dolibarr17.0.0-RCE+Enlightenment v0.25.3权限提升

信息收集 IP AddressOpening Ports10.10.11.11TCP:22,80 $ nmap -p- 10.10.11.11 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 06:2…

【软件使用-MEGA】报错及解决方法

报错1:Error: MEGA has detected duplicate taxa labels. (in line 370) **************************************************************************** ; Please note the following important messages: ; **********************************…

怎么写文献综述?文献综述方法和工具推荐!

文献综述是每个科研人绕不过的坎,其实文献综述简单说就是对你自己研究主题之前的研究的一个完整的概括,这个完整的概括主要是来展示目前已有的一些观点和未来可能可以在这个主题之下能够研究的一些创新点,用很多文献来支撑你自己的研究主题。…

Java11 文件操作和io流

文件操作和IO流 文件操作和IO流磁盘操作File类创建file对象文件操作获取文件信息判断文件删除文件创建文件 Files工具类字符操作字节操作遍历目录(非递归) IO流字节操作(字节流)输出流:InputStream(读&…

C++学习笔记——菲波那契数

一、题目描述 二、代码 #include <iostream> using namespace std;int main() {int k0;cin >> k;int a[k];a[0]1;a[1]1;for(int i2;i<k;i){a[i] a[i-1] a[i-2] ;}cout << a[k-1];return 0; }

VBA技术资料MF193:获取右键菜单的名称及ID

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

合宙Air700EAQ硬件设计手册——射频接口、电气特与规格

合宙Air700EAQ是一款基于移芯EC716E平台设计的LTE Cat 1无线通信模组。 支持亚洲FDD-LTE的4G远距离无线传 输技术。 以极小封装&#xff0c;极高性价比&#xff0c;满足IoT行业的数传应用需求。 例如共享应用场景&#xff0c;定位器场景&#xff0c;DTU数 传场景等。 本文我…

中仕公考怎么样?考公怎么看我的专业能不能报?

正在国考备考的考生们注意看了&#xff0c;怎么看自己的专业是否能报?中仕为大家讲解一下! 在公务员考试中&#xff0c;不同的专业可选择的岗位不同&#xff0c;根据岗位的多少又分为&#xff1a;热门专业和冷门专业&#xff0c;那些专业是热门专业? 考公热门专业&#xff…

Java 工厂模式的使用,零基础教程,上手即会

工厂模式&#xff08;Factory Pattern&#xff09;是一种常用的创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通过使用一个共同的接口来指向新创建的对象。&#xff08;常用…

splunk Enterprise 的HTTP收集器-windows

1.创建HTTP收集器 2.使用HTTP收集器 然后打开全局设置&#xff1a;把ssl给去掉&#xff0c;点保存&#xff08;保存之后&#xff0c;可以看到这些状态全部都是已启用了&#xff09;&#xff1a; 3.测试&#xff1a; curl --location --request POST http://192.168.11.131:808…