当前位置: 首页 > news >正文

C++ 指针变量做参数传递时的情况分析

前言

指针变量作为参数传递时,很容易混淆指针本身和指针指向的内容,实际应用中可能会导致无法预料的问题,所以做一下详细分析。
注意,在测试过程中为了看测试效果,有些指针变量分配了空间,但是未做回收,实际应用中要注意,分配空间后在合适的位置释放。

1. 指针变量直接作为参数传递

指针变量pVariant 作为实参传递给函数funcPointer,在funcPointer中由形参pParam接收

1.1 代码

void funcPointer(int *pParam)
{qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;// 修改指针所指向地址中的内容*pParam = 2;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;// 修改pParam的指向pParam = new int;*pParam = 3;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int *pVariant = new int;*pVariant = 1;qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;funcPointer(pVariant);qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;return a.exec();
}

1.2 输出结果:

1. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x1986708 pVariant值 1
2. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x1986708 pParam  值 1
3. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x1986708 pParam  值 2
4. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x1986848 pParam  值 3
5. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x1986708 pVariant值 2

1.2.1 结果分析:

  • 从1,2可以看出,pVariant和pParam 本身的存储地址不相同,指向的地址和pVariant相同,说明pParam是pVariant的一个拷贝。
  • 从2,3,5可以看出,通过函数funcPointer可以成功修改指针所指向的地址中的内容。
  • 从1,3,4,5可以看出,修改形参pParam指向的地址后,不会影响实参pVariant。
    综上,一级指针变量直接做为参数传递时,函数中会产生一个临时拷贝,通过这个拷贝可以修改原指针变量所指向地址的内容,但是不能改变原指针的指向。

1.3 在函数funcPointer最后增加回收空间操作:

    delete pParam;pParam = nullptr;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam;

1.3.1 输出结果:

1. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x31265e8 pVariant值 1
2. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x31265e8 pParam  值 1
3. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x31265e8 pParam  值 2
4. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x3126768 pParam  值 3
5. pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x0
6. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x31265e8 pVariant值 2

从结果可以看出,如果形参pParam 执行new重新分配了空间,即此时pParam 和pVariant指向的地址不同,那么在函数中回收指针空间时只能操作pParam,不会回收指针变量pVariant的空间,所以此时想回收指针变量pVariant空间的话,需要在外部回收。

1.3.2 funcPointer函数中去掉pParam的new操作,增加delete

void funcPointer(int *pParam)
{qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;// 修改指针所指向地址中的内容*pParam = 2;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;delete pParam;pParam = nullptr;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int *pVariant = new int;*pVariant = 1;qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;funcPointer(pVariant);qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;return a.exec();
}

1.3.3 输出结果

pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x19267e8 pVariant值 1
pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x19267e8 pParam  值 1
pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x19267e8 pParam  值 2
pParam  自身的地址: 0x77fdd0 pParam  指向的地址: 0x0
pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x19267e8 pVariant值 1761789996

从结果可以看出,执行 delete pParam; pParam = nullptr;后,pVariant指向的空间也已经被回收,但是pVariant不为空,依然指向原来的地址,获取到了一个未定义的值,这样可能导致程序出现不可控的问题。

2.指针变量作为引用参数传递

2.1 代码

void funcRefPointer(int *&pParam)
{qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;*pParam = 2;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;pParam = new int;*pParam = 3;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam<<"pParam  值"<<*pParam;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int *pVariant = new int;*pVariant = 1;qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;funcRefPointer(pVariant);qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;return a.exec();
}

2.2 输出结果:

1. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x34665f8 pVariant值 1
2. pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x34665f8 pParam  值 1
3. pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x34665f8 pParam  值 2
4. pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x3466738 pParam  值 3
5. pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x3466738 pVariant值 3

2.2.1结果分析:

pParam 和 pVariant的存储地址、指向地址和内容完全一致。
指针变量作为引用传递时,形参pParam是指针变量pVariant的一个别名,对pParam的操作相当于对pVariant直接进行操作。引用传递时可以修改原指针的指向,可以修改指向地址的内容。

2.3在函数funcRefPointer最后增加回收空间操作:

    delete pParam;pParam = nullptr;qDebug()<<"pParam  自身的地址:"<<&pParam<<"pParam  指向的地址:"<<pParam;

2.3.1输出结果:

pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x3496638 pVariant值 1
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x3496638 pParam  值 1
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x3496638 pParam  值 2
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x3496878 pParam  值 3
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x0
pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x0
从结果可以看出,引用传递指针变量时,在函数中所有对引用变量的操作,都会影响原来的指针,包括delete操作,所以引用传递时,如果确定此指针之后不再使用,那么可以在函数中释放空间并将指针置空。detele指针并置为nullptr后,无法再获取指针指向的内容。

3.使用二级指针传递

传递指针变量的地址

3.1 代码

void funcPPointer(int **pParam)
{qDebug()<<"pParam  自身的地址:"<<&(*pParam)<<"pParam  指向的地址:"<<*pParam<<"pParam  值"<<**pParam;**pParam = 2;qDebug()<<"pParam  自身的地址:"<<&(*pParam)<<"pParam  指向的地址:"<<*pParam<<"pParam  值"<<**pParam;*pParam = new int;**pParam = 3;qDebug()<<"pParam  自身的地址:"<<&(*pParam)<<"pParam  指向的地址:"<<*pParam<<"pParam  值"<<**pParam;
}int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);int *pVariant = new int;*pVariant = 1;qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;funcPPointer(&pVariant);qDebug()<<"pVariant自身的地址:"<<&pVariant<<"pVariant指向的地址:"<<pVariant<<"pVariant值"<<*pVariant;return a.exec();
}

3.2 输出结果

pVariant自身的地址: 0x77fdec pVariant指向的地址: 0x35166c8 pVariant值 1
pParam  自身的地址: 0x77fdec pParam  指向的地址: 0x35166c8 pParam  值 1
pParam  自身的地址: 0x77fdec pParam  指向的地址: 0x35166c8 pParam  值 2
pParam  自身的地址: 0x77fdec pParam  指向的地址: 0x3516748 pParam  值 3
pVariant自身的地址: 0x77fdec pVariant指向的地址: 0x3516748 pVariant值 3

二级指针传递时,输出结果和引用传递一样,因为都相当于传递了原指针的地址。

3.3 在函数funcPPointer最后增加:

    delete (*pParam);(*pParam) = nullptr;qDebug()<<"pParam  自身的地址:"<<&(*pParam)<<"pParam  指向的地址:"<<*pParam;

3.4 输出结果:

pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x34967a0 pVariant值 1
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x34967a0 pParam  值 1
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x34967a0 pParam  值 2
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x3496730 pParam  值 3
pParam  自身的地址: 0x77fe04 pParam  指向的地址: 0x0
pVariant自身的地址: 0x77fe04 pVariant指向的地址: 0x0

增加delete后的输出结果也和引用传递时相同。所以,指针变量作为引用和二级指针的方式传递时,效果相同。

注意事项

1. delete指针后,如果不将指针置为nullptr,会产生野指针,指针仍会指向原来的地址,再次使用可能会导致程序崩溃,或者会得到一个不确定的值,导致程序产生不可控的结果。
2. 使用引用传递或者二级指针传递时,在函数中重新分配空间之前,需要将上一次new分配的空间回收,否则会造成内存泄漏。也就是多次new的时候需要对应的delete。
3. 如果需要使用调用接口的方式释放指针空间时,需要使用二级指针或者引用传递指针变量的方式,也就是直接传递指针变量的地址。如果直接使用指针传递,能够正常回收空间,但是无法将实参指针置为空值,导致其成为野指针,从而引起内存问题。

相关文章:

C++ 指针变量做参数传递时的情况分析

前言 指针变量作为参数传递时&#xff0c;很容易混淆指针本身和指针指向的内容&#xff0c;实际应用中可能会导致无法预料的问题&#xff0c;所以做一下详细分析。 注意&#xff0c;在测试过程中为了看测试效果&#xff0c;有些指针变量分配了空间&#xff0c;但是未做回收&am…...

Linux环境下Oracle 11g的离线安装与配置历程

在成功体验了 Windows 版本的Oracle 11g 后&#xff0c;这几天心血来潮&#xff0c;决定再挑战一下Linux 环境下的安装&#xff0c;特别是在考虑到部门内部虚拟机无法联网的情况下&#xff0c;我选择了在CentOS 7上进行离线安装。这次安装之旅&#xff0c;主要参考了下面大佬的…...

上位机图像处理和嵌入式模块部署(mcu项目2:串口日志记录器)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 淘宝上面有一个商品蛮好玩的&#xff0c;那就是日志记录器。说是记录器&#xff0c;其实就是一个模块&#xff0c;这个模块的输入是一个ttl串口&am…...

容器是线程不安全的,如果多线程下不加锁直接使用容器会发什么

可能存在的问题 数据竞争 当两个或多个线程同时读写同一个容器且至少有一个线程在写时&#xff0c;会导致数据竞争。这种情况下&#xff0c;容器的内部状态可能会被破坏&#xff0c;从而导致未定义行为。这些未定义的行为包括数据损坏&#xff0c;程序崩溃&#xff0c;以及无…...

配置光源——笔记

一、灯光的类型 (一&#xff09;Directional Light&#xff08;定向光&#xff09; 1、只改变方向变化&#xff0c;不记录位置变化 2、相当于太阳光 3、室外一般使用 (二&#xff09;Spot 聚光灯&#xff1a;昏暗&#xff08;凌晨或傍晚&#xff09;&#xff0c;有一个光斑…...

Java---SpringBoot详解一

人性本善亦本恶&#xff0c; 喜怒哀乐显真情。 寒冬暖夏皆有道&#xff0c; 善恶终归一念间。 善念慈悲天下广&#xff0c; 恶行自缚梦难安。 人心如镜自省照&#xff0c; 善恶分明照乾坤。 目录 一&#xff0c;入门程序 ①&#xff0c;创建springboot工程&#…...

MFC扩展库BCGControlBar Pro v35.0 - 可视化管理主题等全新升级

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.0已全新发布了&#xff0c;这个版本改进类Visual Studio 2022的视觉主题、增强对多个…...

Springboot 配置 log4j2 时的注意事项

感谢博主 https://www.cnblogs.com/fishlittle/p/17950944 依赖 SpringBoot 的 spring-boot-starter/ spring-boot-starter-web 自带的是 logback 日志&#xff0c;若要使用 log4j2 日志&#xff0c;需要引入对应依赖。logback 日志和 log4j2 日志都是对 slf4j 门面的实现&am…...

微服务-初级篇

微服务-初级篇 认识微服务1.1 单体架构1.2 分布式架构1.3 微服务 SpringCloud2.1 了解2.2 服务拆分原则2.3 服务拆分效果 Nacos注册中心3.1 认识和安装Nacos3.1.1 Nacos下载3.1.2 Nacos安装 3.2 服务注册到Nacos Feign远程调用4.1 Feign引入4.2 Feign配置 认识微服务 1.1 单体…...

批量制作word表格

问题背景 将excel表中的成绩内容制作为成绩单&#xff0c;每页对应一个学员的成绩&#xff0c;方便打印 代码实现 ## 导入包 import pandas as pd from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH,WD_LINE_SPACING# 读取 Excel 内容 df pd.read_e…...

代码随想录算法训练营:27/60

非科班学习算法day27 | LeetCode455:分发饼干 &#xff0c;Leetcode376:摆动序列 &#xff0c;Leetcode53:最大子数组和 介绍 包含LC的两道题目&#xff0c;还有相应概念的补充。 相关图解和更多版本&#xff1a; 代码随想录 (programmercarl.com)https://programmercarl.c…...

Redis 中String类型操作命令(命令演示,时间复杂度,返回值,注意事项)

String 类型 文章目录 String 类型set 命令get 命令mset 命令mget 命令get 和 mget 的区别incr 命令incrby 命令decr 命令decrby 命令incrbyfloat 命令append 命令getrange 命令setrange 命令 字符串类型是 Redis 中最基础的数据类型&#xff0c;在讲解命令之前&#xff0c;我们…...

2024亚太杯中文赛B题洪水灾害的数据分析与预测原创论文分享

大家好&#xff0c;从昨天肝到现在&#xff0c;终于完成了2024年第十四届 APMCM 亚太地区大学生数学建模竞赛B题洪水灾害的数据分析与预测的完整论文啦。 实在精力有限&#xff0c;具体的讲解大家可以去讲解视频&#xff1a; 2024亚太杯中文赛B题洪水灾害预测原创论文保姆级教…...

Oracle 19c 统一审计表清理

zabbix 收到SYSAUX表空间告警超过90%告警&#xff0c;最后面给出的清理方法只适合ORACLE 统一审计表的清理&#xff0c;传统审计表的清理SYS.AUD$不适合&#xff0c;请注意。 SQL> Col tablespace_name for a30 Col used_pct for a10 Set line 120 pages 120 select total.…...

PostgreSQL(二十二)缓冲区管理器

目录 一、缓冲区概述 1、缓冲区结构 2、buffer_tag结构 3、Backend进程读取操作 4、写脏块 二、缓冲区管理器结构 1、第一层&#xff1a;Buffer Table layer&#xff08;缓冲区表层&#xff09; 2、第二层&#xff1a;Buffer Descriptor Layer&#xff08;缓冲区描述层…...

流程制造业与离散制造业有何差异?流程行业智能制造关注什么?

在当今快速发展的工业领域&#xff0c;智能制造已经成为推动制造业转型升级的关键力量。随着“工业4.0”概念的提出&#xff0c;智能制造的理念和技术被广泛应用于各个制造行业&#xff0c;包括离散制造业和流程制造业。尽管智能制造的起源和发展在很大程度上受到了离散制造业的…...

【论文速读】《面向深度学习的联合消息传递与自编码器》,无线AI的挑战和解决思路

这篇文章来自华为的渥太华无线先进系统能力中心和无线技术实验室&#xff0c;作者中有大名鼎鼎的童文。 一、自编码架构的全局收发机面临的主要问题 文章对我比较有启发的地方&#xff0c;是提到自编码架构的全局收发机面临的主要问题&#xff1a; 问题一&#xff1a;基于随…...

C++从入门到起飞之——输入输出!

目录 1.命名空间 1.1namespace的价值 1.2namespace的定义 1.3命名空间使⽤ 2.C输⼊&输出 3.完结散花 个人主页&#xff1a;秋风起&#xff0c;再归来~ C从入门到起飞 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己…...

米文AD10配置gmsl摄像头操作

一、进入桌面快捷方式 0、设置摄像头型号 miivii_websettings.desktop 设置摄像头 1、获取camera信息 cat /var/log/gmsl_camera.lognvidiamiivii-tegra:~$ cat /var/log/gmsl_camera.log attestationVerify [13] succeed. [INFO ]: miivii gmsl service start! [INFO ]: V…...

【Selenium配置】WebDriver安装浏览器驱动(ChromeEdge)

【Selenium配置】WebDriver安装浏览器驱动&#xff08;Chrome&Edge&#xff09; 文章目录 【Selenium配置】WebDriver安装浏览器驱动&#xff08;Chrome&Edge&#xff09;Chrome确认Chrome版本下载对应driver把解压后的chromedriver文件放在chrome安装目录下&#xff0…...

预测算法面试

这次面试的是一个预测算法的岗位。虽然我对供应链相关的预测很厌烦了&#xff0c;但是这个不是供应链领域的&#xff0c;感觉应该还好。 首先在介绍工作经历和项目部分&#xff0c;这次面试没有上来没有条理乱说一气&#xff0c;而是预测目标、算法架构、各种使用特征这些分层…...

号称世界上第一个开源实时翻译的 App,微软开源GraphRAG:极大增强大模型问答、摘要、推理,以及开源基于ChatGPT的超级文本代码智能体(附代码地址)

号称世界上第一个开源实时翻译的 App&#xff0c;微软开源GraphRAG&#xff1a;极大增强大模型问答、摘要、推理&#xff0c;以及开源基于ChatGPT的超级文本代码智能体&#xff08;附代码地址&#xff09; 在「端侧」上实现可离线的「实时同传」翻译&#xff0c;支持 29 语言的…...

PyTorch 2-深度学习-模块

PyTorch 2-深度学习-模块 一: pytorch1> pytorch 介绍2> pytorch 作用3> pytorch 优点4> pytorch 流程二:pytorch 模块1> torch.Tensor 模块2> torch.nn模块3> torch.nn.function模块4> torch.random模块5> torch.onnx模块6> torch.sparse模块7…...

【MyBatis】MyBatis 理论 40 问(二)

《MyBatis 理论 40 问》包含以下 2 篇文章&#xff1a; MyBatis 理论 40 问&#xff08;一&#xff09;MyBatis 理论 40 问&#xff08;二&#xff09; MyBatis 理论 40 问&#xff08;二&#xff09; 21.如何获取生成的主键&#xff1f;22.当实体类中的属性名和表中的字段名不…...

数据分析——Python网络爬虫(三){爬虫基本原理}

爬虫基本原理 爬虫基本流程拉取什么数据JavaScript渲染页面cookies爬虫代理检查robots.txt爬虫的攻与防 爬虫基本流程 • 获取网页源代码&#xff1a;通过库来实现&#xff0c;urllib&#xff0c;requests等实现http请求    • 提取信息&#xff1a;分析网页源代码&#xff0…...

Linux 忘记root密码,通过单用户模式修改

银河麒麟桌面操作系统 V10&#xff08;sp1&#xff09;”忘记用户密码&#xff0c;需要修改用户密码所写&#xff0c;可用于 X86 架构和 arm 架构。 2. 选择第一项&#xff0c;在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末&#xff0c;添加“init/bin/bas…...

安卓热门面试题二

什么是AndroidManifest.xml文件&#xff1f;它包含了哪些重要信息&#xff1f; AndroidManifest.xml文件是Android应用程序的全局配置文件&#xff0c;每个Android应用程序的根目录中都必须包含一个AndroidManifest.xml文件&#xff0c;且文件名不能修改。这个文件对于Android…...

agents 分类

一、分类 自动agent、半自动agent、领域、自定义sop和支持人为干预的agent。 先泼个冷水&#xff0c;目前这些agent项目都是实验品&#xff0c;发展还没有做知识库问答相关开源项目那么成熟&#xff0c; 二、全自动agent autoGPT、loopGPT、babyAGI 全自动agent就是人类不可…...

【期末考试复习】概率论与数理统计(知识点模式 - 复习题2)

题目&#xff1a; 设随机变量 X X X 的概率密度函数为 f ( x ) a b x f(x) a bx f(x)abx&#xff0c;其中 0 < x ≤ 1 0 < x \leq 1 0<x≤1&#xff1b; f ( x ) 0 f(x) 0 f(x)0&#xff0c;在其他情况下。已知 P ( X ≤ 1 / 2 ) 3 / 8 P(X \leq 1/2) 3/…...

Jetpack Compose实现一个简单的微信UI

https://blog.csdn.net/News53231323/article/details/128509048 https://franzliszt1847.blog.csdn.net/article/details/129344822...

宁波营销型网站建设优化建站/上海百度公司总部

经常遇到这样的情况&#xff0c;要取得所有客户的最新交易记录&#xff0c;读取网站所有浏览者最后一次访问时间。一个客户只读取最新的一次记录&#xff0c;相同&#xff0c;大部分的人首先想到的就是排除所有记录&#xff0c;相同的只取一条。用distint,但是distint只能取到一…...

可以自己做直播网站吗/如何创建自己的卡网

内容来自网上查找和总结以及自己的尝试boot里面的启动项是根据其它文件生成的&#xff0c;如果改boot里面&#xff0c;会在你更新grub后再次回到原来的状态。(之后 我(有显卡驱动问题的用户)通过在开机时选择系统页面按e在倒数第二行ro quiet splash 后面加上acpi_osi! acpi_os…...

龙湖什么网站做宣传/外贸平台自建站

**章 简介Web应用程序的历史对servlet的支持servlet的优势第二章 HTTP Servlet基础HTTP基础Servlet API制作网页Web应用程序总结第三章 servlet的生命周期servlet的选择servlet重新载入init和destroy单线程模式后台处理启动时载入客户端缓存服务端缓存第四章 获取信息Servl…...

日本做动漫软件视频网站/seo是指什么

以2008R2 SQL为例 1、 在开始/管理工具里打开系统的监视器 新建数据收集器 输入名称 添加监视项 添加项 输入保存的目录 创建完成后启动监视器 1、 打开SQL server Profiler跟踪服务 新建跟踪项 运行一段时间后保存 关闭窗口&#xff0c;再打开这个跟踪日志&#xff0c;并导入之…...

做网站图片路径做缓存吗/今日热点新闻视频

上海最近搞活动调休&#xff0c;要搞深度学习&#xff0c;win上还是不方便&#xff0c;准备弄个ubuntu。于是有以下回忆文字。在机器上装了个双系统。花了两天。再也不想玩了。准备用ubuntu来做深度学习的。本文写于2019年11月4日。机器是神舟Z7-KP7D2&#xff0c;i7-7700HQGTX…...

专项培训网站建设方案/网络营销岗位

原文地址&#xff1a;http://www.cnblogs.com/ygj0930/p/7110850.html 一&#xff1a;继承 在不改变底层对象的时候添加新的功能——这是通过继承机制来实现的&#xff0c;作为在现有对象之上的修改层&#xff0c;这些修改可以发生在所有级别&#xff1a;模型&#xff0c;视图和…...