news 2026/2/22 7:26:23

C++与Python:内存管理与指针的对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++与Python:内存管理与指针的对比
一、C++中的指针与引用
1.1 C++ 指针:直接操作内存

在 C++ 中,指针允许直接访问和操作内存地址。指针存储一个变量的地址,可以通过该地址访问或修改数据。

代码语言:javascript

AI代码解释

int num = 10; int* ptr = &num; // 获取num的地址 cout << *ptr << endl; // 输出:10,通过指针访问num的值

基本操作

  • &获取地址。
  • *解引用,访问该地址的值。
1.2 C++ 引用:简化的内存访问

引用是一个变量的别名,指向另一个变量,而不需要存储地址。引用通常用于函数参数传递。

代码语言:javascript

AI代码解释

int num = 10; int& ref = num; // 创建num的引用 ref = 20; // 通过引用修改num的值 cout << num << endl; // 输出:20

特点

  • • 必须初始化,并且不能为NULL。
  • • 比指针更简洁和安全,常用于传递参数。
1.3 Python 引用传递

在 Python 中,所有变量都是对象的引用。虽然没有显式指针,Python 通过引用传递对象的地址。

代码语言:javascript

AI代码解释

num = 10 ref = num # 传递引用 ref = 20 print(num) # 输出:10,Python中的int是不可变类型

虽然 Python 没有显式指针,但变量本质上是通过引用传递的。


二、内存管理:C++手动控制与Python自动管理
2.1 C++ 内存分配与释放:new 和 delete

C++ 使用newdelete来手动分配和释放内存。

代码语言:javascript

AI代码解释

int* ptr = new int; // 分配内存 *ptr = 5; // 设置值 delete ptr; // 释放内存
  • new:在堆区分配内存。
  • delete:释放动态分配的内存。
2.2 内存泄漏与智能指针

C++ 中,忘记释放内存会导致内存泄漏。为了解决这一问题,C++ 提供了智能指针:

代码语言:javascript

AI代码解释

#include <memory> std::unique_ptr<int> ptr = std::make_unique<int>(10); // 自动管理内存
2.3 Python 的垃圾回收:自动内存管理

Python 使用垃圾回收机制自动管理内存。当对象的引用计数为零时,Python 会自动回收该对象。

代码语言:javascript

AI代码解释

import gc gc.collect() # 强制回收内存

Python 的自动垃圾回收大大简化了内存管理,减少了内存泄漏的风险。


三、C++ 与 Python 的内存管理对比
3.1 手动内存管理 vs 自动管理
  • C++:开发者需要手动管理内存,使用newdelete
  • Python:自动垃圾回收,不需要开发者手动释放内存。
3.2 指针与引用的差异

C++ 中的指针允许直接操作内存地址,而 Python 使用引用传递对象,避免了指针操作的复杂性。

www.dongchedi.com/article/7588948864296714814
www.dongchedi.com/article/7588948673011728921
www.dongchedi.com/article/7588948986024198681
www.dongchedi.com/article/7588947393409090072
www.dongchedi.com/article/7588949176365646360
www.dongchedi.com/article/7588949135194440217
www.dongchedi.com/article/7588948142243070526
www.dongchedi.com/article/7588946058064544318
www.dongchedi.com/article/7588945397742551614
www.dongchedi.com/article/7588944515726492185
www.dongchedi.com/article/7588947344343859737
www.dongchedi.com/article/7588946689940537881
www.dongchedi.com/article/7588947009176863257
www.dongchedi.com/article/7588944406535750168
www.dongchedi.com/article/7588946073901629977
www.dongchedi.com/article/7588945847925637657
www.dongchedi.com/article/7588707381962424856
www.dongchedi.com/article/7588942138353123865
www.dongchedi.com/article/7588944252701442584
www.dongchedi.com/article/7588943488239485464
www.dongchedi.com/article/7588943863319151128
www.dongchedi.com/article/7588706162695389758
www.dongchedi.com/article/7588944665073009177
www.dongchedi.com/article/7588706119292289598
www.dongchedi.com/article/7588943021375291929
www.dongchedi.com/article/7588944306828837400
www.dongchedi.com/article/7588945091293872665
www.dongchedi.com/article/7588945474028438040
www.dongchedi.com/article/7588942163632161304
www.dongchedi.com/article/7588945704186413593


www.dongchedi.com/article/7588948673011663385

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/16 18:06:58

电源设计中PCB线宽与电流对照表的全面讲解

电源设计中PCB线宽与电流关系的深度解析&#xff1a;从原理到实战你有没有遇到过这样的情况&#xff1f;一块精心设计的电源板&#xff0c;在实验室测试时一切正常&#xff0c;可一到满载老化阶段&#xff0c;某段走线就开始发烫、变色&#xff0c;甚至冒烟烧毁。拆开一看&…

作者头像 李华
网站建设 2026/2/19 21:42:27

SMBus多主控竞争检测原理:核心要点图解说明

SMBus多主控竞争检测原理&#xff1a;从工程实战看总线仲裁的精妙设计你有没有遇到过这样的场景——系统里三个控制器同时想读温度传感器&#xff0c;结果通信莫名其妙失败&#xff1f;日志里只留下一个模糊的ARBLOST标志&#xff0c;却不知道谁赢了、谁输了、为什么输&#xf…

作者头像 李华
网站建设 2026/2/22 3:47:44

实现在探测主机中获取MAC地址

目录 为什么只有ARP可以探测局域网内的MAC地址 OSI模型和TCP/IP协议栈 各层协议的作用范围 TCP/UDP通讯先通过ARP获取MAC 再建立TCP连接&#xff0c;但ARP不是必须在同一个局域网内才能使用吗&#xff0c;那为什么TCP/UDP可以探测不在同一个局域网内的主机? 关键区别&…

作者头像 李华
网站建设 2026/2/13 1:53:46

PyTorch-CUDA-v2.6镜像中使用TorchRec处理推荐系统大数据

PyTorch-CUDA-v2.6 镜像中使用 TorchRec 处理推荐系统大数据 在当今互联网服务高度个性化的时代&#xff0c;推荐系统早已不再是“猜你喜欢”的简单算法&#xff0c;而是驱动电商成交、短视频留存、广告变现的核心引擎。无论是抖音的无限滑动&#xff0c;还是淘宝首页千人千面的…

作者头像 李华
网站建设 2026/2/10 11:07:17

OpenAMP实现CPU间数据共享:工业自动化完整示例

OpenAMP实现CPU间数据共享&#xff1a;工业自动化实战全解析在现代工业控制系统中&#xff0c;我们经常遇到一个棘手的问题——Linux系统无法满足硬实时控制需求。比如你写了一个PID控制器&#xff0c;跑在Cortex-A核心上&#xff0c;却发现电机响应总是“慢半拍”&#xff0c;…

作者头像 李华
网站建设 2026/2/20 4:49:31

PyTorch-CUDA-v2.6镜像中运行Deformable DETR目标检测模型

在 PyTorch-CUDA-v2.6 镜像中运行 Deformable DETR 目标检测模型 当我们在智能安防系统中部署一个行人检测模块&#xff0c;或是为工业质检流水线加入缺陷识别能力时&#xff0c;真正困扰开发者的往往不是模型本身的设计&#xff0c;而是“为什么代码跑不起来”——CUDA 版本不…

作者头像 李华