<未完>再次研究指针和引用

[Java JVM] Hotspot GC研究- 64位引用指针压缩技术 为什么需要指针压缩在上一篇文章 [Java JVM] Hotspot GC研究- 开篇&对象内存布局 中介绍对象内存布局时, 曾提到过, 由于在64位CPU下, 指针的宽度是64位的, 而实际的heap区域远远用不到这么大的内存, 使用64bit来存对象引用会造成浪费, 所以应该做点事情来节省资源. 如何做基于以下事实: CPU 使用的虚拟地址是64位的, 访问内存时, 必须使用64位的指针访问内 阅读详情
#include <iostream>
using namespace std;
class apple{
public:
	int id;

public:
	apple(int id){
	   this->id = id;
	}
	void operator=(apple tmp){
		this->id = tmp.id;
	}
};
void f1(apple* app){
   app = new apple(101);
}
void f2(apple& app){
   apple* tmp = new apple(101);
   app = *tmp;
}
void f3(apple* &app){
   app = new apple(101);
}
void f4(apple app){
   apple* tmp = new apple(101);
   app = *tmp;
}
int main(){
   apple* app = new apple(100);
   apple app2 = *app;
   //f1(&app2);
   //f3(&app2);报错
   //apple* c = &app2;
   //f3(c);
   f4(app2);
   //app->id
   cout << app2.id << endl;
}
//f1:100
//f2:101
//f3:101
//f4:100
//app2
//f1:100
//f2:101
//f3:错误
//f3:100
//f4:100
#include <iostream>
using namespace std;
class apple{
public:
	int id;

public:
	apple(int id){
	   this->id = id;
	}
	void operator=(apple tmp){
		this->id = tmp.id;
	}
};
void f1(apple* app){
   //app = new apple(101);
	app->id = 101;
}
void f2(apple& app){
   apple* tmp = new apple(101);
   app = *tmp;
}
void f3(apple* &app){
   app = new apple(101);
}
void f4(apple app){
   apple* tmp = new apple(101);
   app = *tmp;
}
int main(){
   apple* app = new apple(100);
   apple app2 = *app;
   //f1(&app2);
   //f3(&app2);报错
   //apple* c = &app2;
   //f3(c);
   //f4(app2);
   //app->id
   f1(app);
   cout << app->id << endl;
}
//这个竟然输出101………………


逆向实战:如何绕过iTunes 12.6.5.3的反调试机制(附X64dbg插件配置) 本文深入剖析了iTunes 12.6.5.3的反调试机制与登录协议。通过X64dbg动态调试与IDA静态分析,详细演示了如何绕过其反调试检测,并定位到核心的登录协议加密函数,揭示了其请求签名(X-Apple-ActionSignature)的生成逻辑与依赖关系,为客户端安全研究与协议分析提供了实战思路。 阅读详情

相关推荐

Android Settings 设置Preference置灰显示

使Preference置灰显示,不能点击。先调用Preference的setEnabled(false),再调用setShouldDisableView(true); 如果使置灰项恢复正常可点击,可调用setEnabled(true)。

随风而动 1048

指针和引用总结(详细,易懂,全面,直观)

既然选择了远方,便只顾风雨兼程!

weixin_73233099的博客 9956

PSIM仿真实战:反激电源从设计到调试的完整流程(附短路保护配置)

本文详细介绍了使用PSIM仿真工具进行反激电源从设计到调试的完整流程,包括变压器参数设计、功率器件选型、动态特性调试以及短路保护配置。通过实战案例和仿真技巧,帮助工程师提前暴露并解决设计中的常见问题,如负载突变、输入电压波动和短路保护失效等,显著降低硬件试错成本。

weixin_29216353的博客 244

C语言的指针和java的引用有什么区别?

C语言指针:指针是一个变量,用来存储另一个变量的内存地址。java引用:引用是一个变量,用来间接访问堆内存中的对象。无论是c语言指针,还是java引用,都是变量。只在定义上还是没有什么区别的。

记录学习路上的每一个 “啊哈!” 时刻 欢迎交流,共同进步! 6027

保姆级教程:在寒武纪MLU370上从零部署YOLOv5(附安全帽数据集)

本文提供在寒武纪MLU370上从零部署YOLOv5的保姆级教程,涵盖环境配置、模型迁移、安全帽数据集处理、训练优化及推理部署全流程。通过实战案例展示MLU370在目标检测任务中的高效性能,适合开发者快速掌握国产AI加速卡的应用技巧。

weixin_27419879的博客 189

TMC2209串口配置实战:从寄存器解析到电机精准控制

本文详细解析TMC2209步进电机驱动芯片的串口配置方法,从硬件连接到UART通信协议,再到核心寄存器功能详解。通过实战案例展示电流控制、微步细分和速度调节等关键配置,帮助工程师实现电机精准控制,并提供了常见故障诊断和优化技巧。

f6g7h8i9j的博客 1174

C++中二级指针(指针引用)解释总结

今日在看视频学东西时,大量用到二级指针,于是便查阅资料对指针进行了研究总结。 1. 为什么会用到指针(或引用)? 在一个函数的执行中,局部变量发生的变换不会作用在函数外(且值传递浪费内存)。因此便用到了指针(或引用)来通过地址传递从而使函数的执行结果对全局都有影响。 2. 为什么会用到二级指针(或指针引用)? a、例如一个通讯录系统,一个大的系统里面,有多个对象需要修改,而每个对象里面又有多个值需要修改,因此这里便需要通过多层指针来嵌套。即多维数组中的参数传递(此处的系统下的对象便为二级指针)。 b、对指.

小黑同学的博客 5158

CPLD新手必看:安路EF2系列配置与烧录的避坑指南(含完整流程)

本文为CPLD新手提供了安路EF2系列芯片从硬件设计到软件烧录的完整避坑指南。重点解析了电源系统、时钟复位、JTAG接口等关键电路设计要点,并详细介绍了使用TD软件进行工程创建、代码编写、引脚分配及程序烧录的全流程,帮助开发者快速上手并规避常见问题。

weixin_29217235的博客 353

智能指针和弱引用

 智能指针和弱引用在android中可以广泛看到的template<typenameT> classSp句柄类实际上是android为实现垃圾回收机制的智能指针。智能指针是c++中的一个概念,因为c++本身不具备垃圾回收机制,而且指针也不具备构造函数和析构函数,所以为了实现内存(动态存储区)的安全回收,必须对指针进行一层封装,而这

醉月 3792

手把手教你用TUSB2E22中继器实现eUSB2与USB 2.0互转(附实测数据对比)

本文详细介绍了如何利用TUSB2E22中继器实现eUSB2与USB 2.0的高效互转,包括技术背景、硬件设计要点、信号完整性测试方法及故障排查策略。通过实测数据对比,展示了TUSB2E22在信号延迟、功耗和眼图性能上的显著优势,为工程师提供了实用的工程方案。

weixin_29199873的博客 283

ArcGIS高效拆分shp文件:无需依赖属性表的实用技巧

本文针对ArcGIS中shp文件因属性表缺失而难以拆分的问题,详细介绍了无需依赖属性表的实用技巧。核心是使用“拆分多部件要素”工具,直接根据图形结构将多个独立但被合并的部件拆分为单个要素,并提供了ArcGIS Pro和ArcMap的操作流程、关键注意事项及拆分后的属性处理方案。

n2o3p4的博客 378

引用传参和指针传参的差别.

<br />在C++中,如果函数的实参的类型是数据类型比较大的数据类型,这是如果使用一般传参就会有很大的不方便,这是如果能够传递一个地址或者是对原来参数的一个引用对提高性能会有很大的帮助。<br /><br />         本文研究一下引用传参和指针传参的区别和联系。其实引用传参和指针传参都能够在条用函数内部对源数据进行修改,这是它们的共同点,但是它们也是有区别的。下面是一个例子:<br />#include <iostream> using namespace std; void Swa

herecles的专栏 1万+

Codex 实战 Skills:用 Skill 自动识别并提取 PDF/图片表格数据,效率提升 10 倍

本文介绍如何构建一个多模态文件解析 Skill,用于自动识别和提取 PDF/图片中的表格数据,提升 AI 智能体处理非结构化文档的效率。文章分析了传统方法的局限性,提出分层解析架构(预处理、检测、提取推理、后处理),推荐技术栈包括 pdfplumber、OpenCV 和多模态大模型。详细说明了 Skill 的元数据定义、数据模型设计(使用 Pydantic)和核心实现流程,通过混合策略实现从复杂文档到结构化 JSON/Markdown 的转换,使 AI 代理具备"阅读"多模态文档的能力。

yueyeguzhuo的专栏 306

C++中的引用和const引用详解(重点研究引用作返回值和参数时的情况)

主要介绍了引用作函数参数和返回值,以及const引用作函数参数和返回值,并且介绍了何时用值传递、引用传递和指针传递。

weixin_42117695的博客 4463

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Java基础总结】舍友给我带饭,请我给他讲明白Java中的引用,对象,和空指针异常~听完直呼值了,问我下顿想吃啥~

Java史上最有爱的总结!一文带你彻底搞懂面试中引用和对象,从空指针异常入手,惊呼面向对象So easy!

m0_56164356的博客 4168

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

我理解的指针与引用

最近在学习Golang的过程中,发现一个有意思的事情,有的文章说函数调用传参时 slice 是引用传递,有的说是值传递。为什么同一个东西大家会不同认识?为了搞清楚其本质,我进行了以下内容的研究: 变量的变量名、变量值、变量地址在内存中是怎么样的? 指针的定义是什么?引用的定义是什么?二者有什么关系? 函数传参中值传递、指针传递与引用传递到底有什么不一样? Go中 slice 在传入函数时到底是...

大愚Talk 1648

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

c语言 空指针解引用,【缺陷周话】第一期:空指针解引用

代码审计是使用静态分析发现源代码中安全缺陷的方法,能够辅助开发或测试人员在软件上线前较为全面地了解其安全问题,防患于未然,因此一直以来都是学术界和产业界研究的热点,并且已经成为安全开发生命周期SDL和DevSecOps等保障体系的重要技术手段。360代码卫士团队基于自主研发的国内首款源代码安全检测商用工具,以及十余年漏洞技术研究的积累,推出“缺陷周话”系列栏目。每周针对CWE、OWASP...

weixin_39983350的博客 2431

C/C++中指针和引用之相关问题研究

源:http://blog.youkuaiyun.com/pathuang68/archive/2009/04/14/4071672.aspx 一、基本知识指针和引用的声明方式:声明指针:char* pc;声明引用:char& rc = 0; 它们的区别:从现象上看,指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变。这句话可以理解为:指针可以被重新赋值

jamestaosh 1032

c++(7)引用作为函数的返回值、指针引用、const引用

引用作为返回值,一般不常见,实际在真正的工作过程中也是极少遇见。引用作为返回值有他的有点,也有他的缺点。看下面的代码 getmem1和getmem2,是简单介绍了一下,通过指针可以实现的返回指针的操作。同理,根据上一篇的内容,能用指针实现的。使用引用也可以实现。这里不做过多研究了。下面开始分析:当引用作为返回值,如getA,实际上返回的是一个别名,我们把getA理解是一个局部的变量temp,在函数返回的时候相当于是 int &temp = a;返回的是局部变量a的别名。但是局部变量a在栈上,并当函数返回

tr_ainiyangyang的博客 1198

指针与指针的引用

C++之研究——指针和引用 VB中的函数或过程的参数有2种传递方式:一种是值传递;一种是引用传递。分别用关键字ByVal和关键字ByRef指出。如果参数是以引用传递的话,函数或过程内部就可以靠这个引用参数来改变外部变量的值。在C语言中,如果要实现在函数内部改变外部变量的值的话,就应该传递这个变量的指针。如果要通过指针访问变量,必须使用指针运算符“*”。这样在源代码中就会显得比较别扭: vo

思想最重要的专栏 5534

【缺陷周话】第1期:空指针解引用

*声明:《缺陷周话》栏目系列文章由360代码卫士团队原创出品。未经许可,禁止转载。 代码审计是使用静态分析发现源代码中安全缺陷的方法,能够辅助开发或测试人员在软件上线前较为全面地了解其安全问题,防患于未然,因此一直以来都是学术界和产业界研究的热点,并且已经成为安全开发生命周期SDL和D...

3514

关于对引用,指针,解引用的思考

关于对引用,指针,解引用的思考

weixin_48020664的博客 387

引用与指针在底层实现研究

这个题目最初是学弟问我的

南浦 1502

空指针解引用漏洞:exploit_me Level 9零指针利用技巧

在CTF(Capture The Flag)竞赛和漏洞研究领域,空指针解引用漏洞是一种常见且极具挑战性的内存安全问题。本文将以**exploit_me**项目的Level 9为例,详细介绍零指针利用的核心原理和实战技巧,帮助新手理解如何识别、分析并利用这类漏洞。 ## 什么是空指针解引用漏洞? 空指针解引用(Null Pointer Dereference)指当程序试图访问或修改地址为0的内存

gitblog_00646的博客 1006

C语言深入研究指针1

本人的技术笔记会优先发布在个人站点。

2501_93598028的博客 1751
上一篇: <Java编程思想>持有对象(笔记)
下一篇: Alibaba_equals与==的区别
louis9212
博客等级 码龄14年 8粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值