惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

A
Arctic Wolf
博客园 - 聂微东
F
Fortinet All Blogs
云风的 BLOG
云风的 BLOG
小众软件
小众软件
V
Visual Studio Blog
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园_首页
L
LangChain Blog
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
Know Your Adversary
Know Your Adversary
Simon Willison's Weblog
Simon Willison's Weblog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
S
Secure Thoughts
Spread Privacy
Spread Privacy
T
Threat Research - Cisco Blogs
Attack and Defense Labs
Attack and Defense Labs
P
Privacy & Cybersecurity Law Blog
O
OpenAI News
H
Heimdal Security Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Help Net Security
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
G
Google Developers Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
Kaspersky official blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tor Project blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tenable Blog
Google Online Security Blog
Google Online Security Blog
PCI Perspectives
PCI Perspectives

远飞闲记

用 OpenClaw 搭建全自动晨间简报系统 Open Claw(🦞龙虾): 新手最常踩的 8 个坑,我帮你踩过了 什么是AI Agent(智能体)? OpenClaw 在微信端使用指南 如何让OpenClaw🦞更好用-调教篇 OpenClaw(龙虾🦞)自主赚钱实验笔记 本地Qwen+云模型:OpenClaw真实体验 AI博客主题开发记 OpenClaw初试记 十年博客路:在AI水文泛滥的时代,为何还在坚守? AI Coding实战吐槽:别被"400刀大神"带偏,这些坑我帮你踩过了! 《相信》把不可能变为可能 我们写的程序被杀毒软件杀了,杀毒软件到底杀了什么? 👋2024 探索Unity单元测试:构建可靠游戏代码的基石 实用小黄鸭调试法 炸裂的Unity割韭菜这事 还是要有信念 您好2023 Docker启动提示虚拟化失败 Golang中配置文件热重载方案 重置博客主题 双链知识管理及logseq使用体验 魔幻的魔都疫情 漫谈国内NFT市场状况 如何在UE4中平衡蓝图与C++的使用 2021时光荏苒,2022可遇可期 UE4(Unreal Engine)本地化资源功能 摈弃:“拥有更多=做的更好的”的观念 鱿鱼游戏 研究UE4(虚幻引擎)后的感想 初试Caddy WebServer GitHub Copilot AI编程的感受 Mac Mini M1真香定律 地震提醒App 共和国失去两大功勋 币圈还好吗? Headless CMS 倒牛奶事件 “鸡娃”现象的观点 2020年新冠期间记录 社区团购团长的入门到放弃 路由折腾记 多电脑鼠键共享方案 Typescript循环引用 Circular Referenec 问题解决方法 《高效清单工作法:聪明人的无压时间管理手册》 Crossword Puzzles Privacy ShareTheCookies Privacy 七月的最后一天 游戏开发中使用的概率算法 笔直站立昂首挺胸的生活态度 Android和H5网游加速器解决方案的探索 Golang基础配置和Go Emacs开发环境的配置 使用Github Actions自动发布Hugo Blog配置 《青年到此为止》读书随笔 逛T推遇见比较有意思的事 GnuGPG Git中的使用及配置 《极简主义:活出生命的真意》阅读记录 疫情记录:热干面出院了 如何有效的阅读一本书:葱鲔火锅式笔记读书法 《麦肯锡精英高效阅读法》读书笔记 2020四年之约 疫情记闻 2020-二月二龙抬头 任天堂(Nintendo)switch NS游戏机 真香 MacBook Pro SSD 512G硬盘升级记 构建Facebook Instant Game本地测试环境 今日有感 Bye 2019,Hi 2020 猎魔人-The Witcher 如何判断是否适合加入创业团队 开发人员业余项目版权的见解 容易改变想法的人 及时止损 VSCode中远程调试NodeJS配置 Android Google Play 内购服务器订单校验 做产品是否要蹭热度 为什么会接入Google Adsense 成功和产品体验的一点想法 共享经济下的牺牲品们 折腰的梯子们 Emacs配置:Unity项目开发配置 人人都想当管理者 对焦虑和迷茫的理解 TypeScript强类型判断引发的问题 找回习惯和中产与爱好 程序员的成长之路 产品、技术、团队 爱心被滥用 工作996.生病ICU 2019初一记事 忆上海,换一种生活方式 记一次地震时的感受 押金是什么 Egret Jenkins搭建构建环境中遇见的坑 去年的总结 要懂的感恩 阿里云OSS+docker Owncloud安装 从修建房子来说开发过程的问题和流程 小记录 与人方便,与己方便
C++程序与内存
2014-05-22 · via 远飞闲记

这里所指的程序是又叫源代码指的电脑中要做某件事情的步骤.当然还有个应用程序的东西,它是程序代码通过编译器根据不同设置编译出来的一个文件.内存值的是电脑的运行内存就是RAM,比如你的电脑有2G内存那么这个电脑的运行内存就是2G.那么程序与内存到底是个什么关系呢?比如有人说这个应用程序占了我电脑50M内存,其实这就是说电脑的内存容量被消耗了5OM.这里从程序员也就是应用功能实现者的角度来说程序与内存的关系.

其实程序在内存中存储的格式是通过二进制0或1的位(bit)来存储的,一般的机器是通过8位bit为一个字节(byte),在C++中基础类型(bool、char、short、int、long、float、double)都是通过最小的占用空间来分配类型存储空间的,具体的分配数值根据各个编译器的情况来决定的。比如:char 占用1字节的空间在内存中就是8位,一般int 占用4个字节就是在内存中就是32位。一般基础的容器类型像数组和自定义类型的占用空间大小都是根绝元素具体类型大小的一个总和,可以通过sizeof()方法来获取类型具体占用空间的大小。对象类型分配的字节空间在内存中都有一个16进制的地址符来对应的.具体有多少个地址符这个根据机器的内存大小来分配的.

在程序运行时内存会给程序分配三个空间:堆,栈,静态内存,下边就说明它们是什么? 堆:就是自由存储的空间程序通过某种方式需要放共享对象的地方,比如:new实例化一个类时内存分配的空间,在不要使用该对象时,堆使用的空间编译器不会自动回收需要显示在程序中释放和销毁对象占用的空间,不过现在大部分语言如Java、ActionScrtip的编译器都有自动回收机制,所以就不需要担心自己在有时候不会释放未使用对象而造成的内存泄漏(程序运行时机器的内存一直增加并且未把不使用的对象释放掉),结果就会使应用崩溃并不能正常使用.但是在C++中 必须显示调用delete来释放存储在堆中的变量所占用的空间. 栈:只在程序运行块时才存在,但栈内存会在不使用块的时候被由编译器自动回收。 静态内存:的里面存储的时全局和局部的静态变量或方法(static)和常量(const)等,这部分占用空间会一直运行到程序结束时才会被释放回收。

还有就是不得不说下指针和引用了,指针就是存放变量在内存中地址的变量,而引用则时变量的另外一个名字,定义引用时程序把引用和初始值就绑定了,定义引用必须被初始化给一个变量并且类型必须和变量类型一致,引用不是一个对象不能定义引用的引用,引用初始化值后不可以更改.而指针则可以指向不同的对象但必须类型必须和初始化值对象的类型一致。

那么堆栈还有静态空间在具体程序中是什么样子呢?用代码来说明

#include <iostream>
#include <string>

using namespace std;

static int count=1; //存储在静态内存里,在程序运行结束后释放

class Person{
    string name;
    int age;
public:
    Person(string nVal,int aVal):name(nVal),age(aVal){};
    std::string getName();
    int getAge();
};

string Person::getName()
{
    return name;
}

int Person::getAge()
{
    return age;
}

void sayHello(Person p)
{
    Person p1("T1",28);//运行到这里的时候存放在栈内存中,当程序运行sayHello函数结束时被释放
    cout<<"Name:"<<p1.getName()<<"Age:"<<p1.getAge()<<endl;
}

Person getPerson(string nameVal,int ageVal)
{
  Person result(nameVal,ageVal);//在函数体运行结束时释放
  return result;
}
int main()
{
    Person p2("T2",12);//这里的p2变量生命周期是main函数结束
    sayHello(p2);
    /**这里其实时给P3拷贝了一个和函数体执行时相同的数据的Person类实例,
    如果这里返回的是函数的临时变量的引用或指针,那么会出现未定义**/
    Person p3 = getPerson();

    auto p = new Person('P',1);//存放在堆内存中
    delete p;//释放了堆内存中p所指向Peson对象所占用的空间
    p= nullptr;//置空了Person类型指针值
    return 0;
}