内存结构
文章平均质量分 75
luckyone906
这个作者很懒,什么都没留下…
展开
-
c++ 中return返回值与内存的分配释放详解
c++原创 2023-01-11 22:16:16 · 3212 阅读 · 0 评论 -
c++中值类型数组和引用数组的区别
c++原创 2022-12-28 22:18:38 · 609 阅读 · 1 评论 -
C++中delete 和 delete []的真正区别
c++原创 2022-12-24 14:35:42 · 4570 阅读 · 1 评论 -
c++中返回参数为引用时不能是在栈中分配的(必须在堆中创建这样内存是手动释放,而栈中因为函数结束会自动释放栈中的内存)
c++原创 2022-11-25 15:13:09 · 496 阅读 · 0 评论 -
c++中引用、指针、值的区别与用途详解
c++原创 2022-11-25 14:16:27 · 672 阅读 · 0 评论 -
C++中值传递、指针传递和引用传递的比较详解
c++原创 2022-11-25 14:05:38 · 224 阅读 · 0 评论 -
c++中指针,堆栈内存分配重要概念理解汇总(实例注释)
c++原创 2022-11-20 10:15:10 · 1782 阅读 · 0 评论 -
c++中指针概念及指针变量的大小
c++原创 2022-11-20 09:55:46 · 945 阅读 · 0 评论 -
c++中内存堆栈的创建与回收
c++原创 2022-11-20 09:38:38 · 587 阅读 · 0 评论 -
C++程序内存分配方式概念与区别(堆与栈)
c++原创 2022-11-19 19:45:35 · 306 阅读 · 0 评论 -
C++中函数调用的整个过程内存堆栈分配详解
c++原创 2022-11-18 22:26:37 · 3359 阅读 · 0 评论 -
虚拟内存概念3
c++原创 2022-11-11 19:10:30 · 1060 阅读 · 0 评论 -
C++程序开启大地址(虚拟内存),让32位程序使用4G内存的方法,虚拟内存概念及寻址范围详解
c++原创 2022-11-11 19:04:58 · 4846 阅读 · 1 评论 -
地址总线,字长,内存容量,寻址范围 之间的计算
c++原创 2022-11-11 20:35:15 · 15964 阅读 · 0 评论 -
windows系统内存结构概述(重要概念释疑)
c++原创 2022-11-11 20:35:45 · 2007 阅读 · 0 评论 -
计算机系统中虚拟内存概念解疑(2)
c++原创 2022-11-11 20:36:19 · 223 阅读 · 0 评论 -
计算机操作系统执行可执行程序时,内存分配详解
c++原创 2022-11-10 20:18:32 · 1438 阅读 · 0 评论 -
计算机系统中虚拟内存概念解疑(1)
c++原创 2022-11-11 20:36:01 · 853 阅读 · 0 评论 -
虚拟内存概念解疑
c++原创 2022-11-11 20:36:38 · 198 阅读 · 0 评论 -
应用程序进程,内存,虚拟内存之间的关系详解(1)
c++原创 2022-11-10 20:02:37 · 970 阅读 · 0 评论 -
C++中运行一个程序的内存分配情况及qt中的内存管理机制
c++原创 2022-11-10 18:57:50 · 1881 阅读 · 0 评论 -
C++中创建二维数组的几种方法
c++原创 2022-09-24 22:16:53 · 2951 阅读 · 0 评论 -
C++中对象的动态建立与释放详解
我们知道可以用new运算符可以动态的分配内存,用delete运算符可以释放这些内存。当我们使用new运算符动态的分配一个内存之后,会自动返回一个该内存段的起始地址,也就是指针。=============下面先给出一个new和delete基本应用的例子,回顾一下它的基本用法============复制代码代码如下:#include<iostream>using namespace std;int main(){int *p;//定义一个指向int型变量的指针pp=n..原创 2022-05-15 19:46:36 · 1852 阅读 · 0 评论 -
C++ 怎么取整形数组的长度
本文主要讨论两个小点,怎样获取主函数中整形数组的长度;自定义函数输入参数为整型数组,怎么得到该数组长度。【正文】很早就知道C++ 中,因为栈的回收机制,函数的返回值不可以是数组。但是,能不能输入参数包含数组呢?答案是肯定的,以指针形式传入即可。那么,问题再进一步,如果我想在函数中对数组进行遍历,可不可以呢?答案还是肯定的。函数中接收数组的是一个数组指针,也就是把数组的函数名传进去,数组的地址被函数接受,那我们怎么知道数组的长度呢?答案还是肯定的,我们可以用strlen函数啊。但原创 2022-05-15 19:44:27 · 3064 阅读 · 0 评论 -
C++中对象创建与释放
创建对象有以下四种形式:#include <iostream> using namespace std; class A{ private: int i; public: A(){ cout<<"调用没有参数的构造函数"<<endl; } A(int a):i(a){ cout<<"调用有一个参数的构造函数"<<endl; } ~A(){cout<<"成员变量为:"<<i<<"原创 2022-05-15 19:41:22 · 3543 阅读 · 0 评论 -
C++中数组初始化方法
定义:int *pia = new int[10]; // array of 10 uninitialized ints此new表达式分配了一个含有 10 个int型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针pia。在自由存储区中创建的数组对象是没有名字的,只能通过其地址间接地访问堆中的对象。注意:C++使用new和delete在堆(自由存储区)上分配和释放动态数组。动态数组初始化:1. 元素只能初始化为元素类型的默认值,而不能像数组变量一...转载 2022-04-25 20:46:35 · 51232 阅读 · 1 评论 -
Qt中跨线程下信号和槽的使用方法
connect用于连接qt的信号和槽,在qt编程过程中不可或缺。它其实有第五个参数,只是一般使用默认值,在满足某些特殊需求的时候可能需要手动设置。Qt::AutoConnection: 默认值,使用这个值则连接类型会在信号发送时决定。如果接收者和发送者在同一个线程,则自动使用Qt::DirectConnection类型。如果接收者和发送者不在一个线程,则自动使用Qt::QueuedConnection类型。Qt::DirectConnection:槽函数会在信号发送的时候直接被调用,槽函数运原创 2022-04-25 21:24:40 · 3807 阅读 · 0 评论 -
C++内存空间管理
1.C++内存机制1.栈(Stack),函数中的局部变量,由编译器负责分配释放,函数结束,变量释放。2.堆(Heap),通过new 申请的内存,由delete或delete[]释放3.自由存储区(Free Storage),由程序员用malloc,calloc/realloc分配,free进行释放,忘记free,会导致内存泄漏,程序结束时,该区域内存由OS回收4.全局区/静态区(Global Static Area),全局变量和静态变量存储区。程序编译完成后,该区域便存在,在C++中,由于全原创 2022-04-25 21:16:27 · 6656 阅读 · 0 评论 -
类对象的内存和堆空间的内存及初始化详解
对象的内存对象的内存可以存在于 3 种地方:全局区(数据段):全局变量 栈空间:函数里面的局部变量 堆空间:动态申请内存(malloc、new等)/******************************************************文章目录前言malloc/freenew/delete申请堆空间在什么情况下会失败malloc申请堆空间时堆空间的初始化利用memset初始化new申请堆空间时堆空间的初始化前言什么情况下需要堆空间?为了在程序运.原创 2022-04-25 21:07:27 · 2673 阅读 · 0 评论 -
C#中4种深拷贝方法实例
1:利用反射实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public static T DeepCopy<T>(T obj) { //如果是字符串或值类型则直接返回 if (obj is string || obj.GetType().IsValueType) return obj; ...原创 2022-03-05 16:38:46 · 1403 阅读 · 0 评论 -
c++中类创建对象的两种方式
class A{};1.A a;2.A *a =new A();第一种方式对象数据存在栈中,是局部变量;第二种方式方式申请了动态内存,即对象数据在堆区。原创 2022-02-05 21:19:24 · 1717 阅读 · 0 评论 -
C++中的野指针问题
文章目录1 C和C++中的野指针问题1.1 野指针的概念1.2 野指针的由来1.3 杜绝野指针的基本原则2 C和C++中的常见内存错误2.1 常见内存错误2.2 内存操作的基本规则1 C和C++中的野指针问题1.1 野指针的概念野指针的概念:指针变量中的值是非法的内存地址,进而形成野指针。野指针不是NULL指针,是指向不可用内存地址的指针。NULL指针并无危害,很好判断,也很好调试。C语言中无法判断一个指针所保存的地址是否合法。1.2 野指针的由来如下情况可能导致野指针的出原创 2021-12-30 20:41:49 · 3856 阅读 · 1 评论 -
句柄的概念详解
1.这里将句柄所能标识的所有东西(如窗口、文件、画笔等)统称为“对象”。2.图中一个小横框表示一定大小的内存区域,并不代表一个字节,如标有0X00000AC6的横框表示4个字节。程序运行到某时刻的内存快照 程序往后运行到另一时刻时的内存快照Windows是一个以虚拟内存为基础的操作系统,很多时候,进程的代码和数据并不全部装入内存,进程的某一段装入内存后,还可能被换出到外存,当再次需要时,再装入内存。两次装入的地址绝大多数情况下是不一样的。也就是说,同一对象...原创 2021-12-13 19:48:00 · 15997 阅读 · 1 评论 -
多线程中堆和栈区别的深入解析
很多现代操作系统中,一个进程的(虚)地址空间大小为4G,分为系统空间和用户空间两部分,系统空间为所有进程共享,而用户空间是独立的,一般WINDOWS进程的用户空间为2G。 一个进程中的所有线程共享该进程的地址空间,但它们有各自独立的(私有的)栈(stack),Windows线程的缺省堆栈大小为1M。堆(heap)的分配与栈有所不同,一般是一个进程有一个C运行时堆,这个堆为本进程中所有线程共享,Windows进程还有所谓进程默认堆,用户也可以创建自己的堆。堆: 是大家共有的空间,分全局堆和局部堆。全.原创 2021-12-02 19:34:55 · 1398 阅读 · 0 评论 -
c++中多线程传递参数原理分析
线程可以共享进程的内存空间,线程拥有自己独立内存。 关于参数的传递,std::thread的构造函数只会单纯的复制传入的变量,特别需要注意的是传递引用时,传入的是值的副本,也就是说子线程中的修改影响不了主线程中的值。值传递 主线程中的值,被拷贝一份传到了子线程中。 1 #include <iostream> 2 #include <thread> 3 4 using namespace std; 5 6 void test(int ti, in原创 2021-12-02 19:26:16 · 1133 阅读 · 0 评论 -
C语言中指针动态内存的申请和释放
什么是动态内存的申请和释放?当程序运行到需要一个动态变量时,需要向系统的堆中申请一块内存,用来存储这块变量,这就是内存的申请。当程序不需要这个变量时,就需要把申请的这块内存释放掉,这就是内存的释放。往往内存的申请和释放是一起使用的,只要有内存的申请,就要有内存的释放,避免出现内存泄漏。C语言指针的申请:(1).在C语言中使用malloc函数申请内存,函数原形:void* malloc(size_t size);参数size代表申请的内存的字节数,参数size_t代表指针的...原创 2020-08-20 21:10:28 · 19222 阅读 · 0 评论 -
C#中模态对话框释放问题
以下实例中可以测出,当一个模态对话框返回DialogResult的结果后, 对话框自动隐藏,但对话框db并没有彻底释放掉,因此仍可以访问db中的成员,想要彻底释放需要手动加上db.close()/delete释放语句private void button2_Click(object sender, EventArgs e) { DialogBox db = new DialogBox(); if(db.ShowDialog()==Dia...原创 2020-08-16 11:17:21 · 436 阅读 · 0 评论 -
QT中手动释放堆中的对象(new 出来的)
Qt内存自动释放有两个前提条件:1. 必须是QObject的派生类 2.必须指定了parent对象 即:Qt 中 父亲被删除的时候会自动销毁他的孩子。所以如果New出来的并且没有父亲。那么则需要手动删除它。需要,不然那块空间就一直占用了 QLabel* lb=new QLabel(); delete (lb); if(lb==NULL) { } delete(this);//this是继承Qweiget基类的子控件,当new出来此.原创 2020-08-15 20:48:58 · 10889 阅读 · 0 评论 -
8086汇编与c++编译器就内存方面的感想
8086汇编中可以手动分配栈内存,没有堆内存的概念,而c++编译器中栈是系统分配的,堆是手动分配的。原创 2020-02-22 14:44:38 · 171 阅读 · 0 评论 -
c语言之 malloc函数详解 在堆中动态分配内存malloc和new的区别
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include <malloc.h> 或 #include <alloc.h> (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针N...原创 2020-02-22 14:39:15 · 2112 阅读 · 0 评论