是在windows系统中预留出来的一段内存区域

作者&投稿:樊平 (若有异议请与网页底部的电邮联系)
在windows中,回收站是内存中的一块区域。对么?~

错误,正确的是回收站是硬盘上的一块区域,还原回收站的文件步骤如下:
1.打开桌面上的“回收站”图标。

2.选择要还原的文件,右键单击,然后选择还原。

3.然后将文件恢复到其原始位置。

扩展资料:
回收站是MicrosoftWindows操作系统中的一个系统文件夹。它主要用于存储用户临时删除的文件。可以恢复存储在回收站中的文件。







使用“回调站”删除文件只是把文件到“回收站”文件夹,并没有释放磁盘空间,并没有完全删除的文件,只要回收站不是空的,你可以在任何时候恢复“回收站”文件。
只有当清空“回收站”时,磁盘空间才真正释放出来。

是硬盘答案是硬盘

内存分配方式:

1. 静态存储区分配   

内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。

 2. 栈区分配   在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。

3. 堆区分配

亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由程序员决定,使用非常灵活,但如果在堆上分配了空间,就有责任回收它,否则运行的程序会出现内存泄漏,频繁地分配和释放不同大小的堆空间将会产生堆内碎块。


程序的内存空间:

1、栈区(stack)—  由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。其操作方式类似于数据结构中的栈。
2、堆区(heap) —  一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。分配方式类似于链表。
3、全局区(静态区)(static)—存放全局变量、静态数据、常量。程序结束后由系统释放。
4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放。
5、程序代码区—存放函数体(类成员函数和全局函数)的二进制代码。

  下面给出例子程序:



  • int a = 0; //全局初始化区  

  • char *p1; //全局未初始化区  

  • int main() {  

  • int b; //栈  

  • char s[] = "abc"; //栈  

  • char *p2; //栈  

  • char *p3 = "123456"; //123456在常量区,p3在栈上。  

  • static int c =0;//全局(静态)初始化区  

  • p1 = new char[10];  

  • p2 = new char[20];  

  • //分配得来得和字节的区域就在堆区。   

  • strcpy(p1, "123456"); //123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。  

  • }  


  • 3.堆与栈的比较 


    3.1申请方式


    stack: 由系统自动分配。 例如,声明在函数中一个局部变量 int b; 系统自动在栈中为b开辟空间。
    heap: 需要程序员自己申请,并指明大小,在C中malloc函数,C++中是new运算符。
    如p1 = (char *)malloc(10); p1 = new char[10];
    如p2 = (char *)malloc(10); p2 = new char[20];
    但是注意p1、p2本身是在栈中的。


    3.2申请后系统的响应


    栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。
    堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。
    对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。
    由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。


    3.3申请大小的限制


    栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示overflow。因 此,能从栈获得的空间较小。
    堆:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,也比较大。

    3.4申请效率的比较


    栈由系统自动分配,速度较快。但程序员是无法控制的。
    堆是由new分配的内存,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。
    另外,在WINDOWS下,最好的方式是用VirtualAlloc分配内存,他不是在堆,也不是栈,而是直接在进程的地址空间中保留一快内存,虽然用起来最不方便。但是速度快,也最灵活。

    3.5堆和栈中的存储内容


    栈:在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。注意静态变量是不入栈的。
    当本次函数调用结束后,局部变量先出栈,然后是参数,最后栈顶指针指向最开始存的地址,也就是主函数中的下一条指令,程序由该点继续运行。
    堆:一般是在堆的头部用一个字节存放堆的大小。堆中的具体内容有程序员安排。
    3.6存取效率的比较
    char s1[] = "a";
    char *s2 = "b";
    a是在运行时刻赋值的;而b是在编译时就确定的;但是,在以后的存取中,在栈上的数组比指针所指向的字符串(例如堆)快。 比如:



  • int main(){  

  • char a = 1;  

  • char c[] = "1234567890";  

  • char *p ="1234567890";  

  • a = c[1];  

  • a = p[1];  

  • return 0;  

  • }  

  • 对应的汇编代码
    10: a = c[1];
    00401067 8A 4D F1 mov cl,byte ptr [ebp-0Fh]
    0040106A 88 4D FC mov byte ptr [ebp-4],cl
    11: a = p[1];
    0040106D 8B 55 EC mov edx,dword ptr [ebp-14h]
    00401070 8A 42 01 mov al,byte ptr [edx+1]
    00401073 88 45 FC mov byte ptr [ebp-4],al
    第一种在读取时直接就把字符串中的元素读到寄存器cl中,而第二种则要先把指针值读到edx中,再根据edx读取字符,显然慢了。

    3.7小结
    堆和栈的主要区别由以下几点:
    1、管理方式不同;
    2、空间大小不同;
    3、能否产生碎片不同;
    4、生长方向不同;
    5、分配方式不同;
    6、分配效率不同;
    管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。
    空间大小:一般来讲在32位系统下,堆内存可以达到4G的空间,从这个角度来看堆内存几乎是没有什么限制的。但是对于栈来讲,一般都是有一定的空间大小的,例如,在VC6下面,默认的栈空间大小是1M。当然,这个值可以修改。
    碎片问题:对于堆来讲,频繁的new/delete势必会造成内存空间的不连续,从而造成大量的碎片,使程序效率降低。对于栈来讲,则不会存在这个问题,因为栈是先进后出的队列,他们是如此的一一对应,以至于永远都不可能有一个内存块从栈中间弹出,在他弹出之前,在他上面的后进的栈内容已经被弹出,详细的可以参考数据结构。
    生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,它的生长方向是向下的,是向着内存地址减小的方向增长。
    分配方式:堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由malloca函数进行分配,但是栈的动态分配和堆是不同的,他的动态分配是由编译器进行释放,无需我们手工实现。
    分配效率:栈是机器系统提供的数据结构,计算机会在底层对栈提供支持:分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行,这就决定了栈的效率比较高。堆则是C/C++函数库提供的,它的机制是很复杂的,例如为了分配一块内存,库函数会按照一定的算法(具体的算法可以参考数据结构/操作系统)在堆内存中搜索可用的足够大小的空间,如果没有足够大小的空间(可能是由于内存碎片太多),就有可能调用系统功能去增加程序数据段的内存空间,这样就有机会分 到足够大小的内存,然后进行返回。显然,堆的效率比栈要低得多。
    从这里我们可以看到,堆和栈相比,由于大量new/delete的使用,容易造成大量的内存碎片;由于没有专门的系统支持,效率很低;由于可能引发用户态和核心态的切换,内存的申请,代价变得更加昂贵。所以栈在程序中是应用最广泛的,就算是函数的调用也利用栈去完成,函数调用过程中的参数,返回地址, EBP和局部变量都采用栈的方式存放。所以,我们推荐大家尽量用栈,而不是用堆。
    虽然栈有如此众多的好处,但是由于和堆相比不是那么灵活,有时候分配大量的内存空间,还是用堆好一些。
    无论是堆还是栈,都要防止越界现象的发生(除非你是故意使其越界),因为越界的结果要么是程序崩溃,要么是摧毁程序的堆、栈结构,产生以想不到的结果。

    4.new/delete与malloc/free比较
    从C++角度上说,使用new分配堆空间可以调用类的构造函数,而malloc()函数仅仅是一个函数调用,它不会调用构造函数,它所接受的参数是一个unsigned long类型。同样,delete在释放堆空间之前会调用析构函数,而free函数则不会。

  • class Time{  

  • public:  

  • Time(int,int,int,string);  

  • ~Time(){  

  • cout<<"call Time’s destructor by:"<<name<<endl;  

  • }  

  • private:  

  • int hour;  

  • int min;  

  • int sec;  

  • string name;  

  • };  

  • Time::Time(int h,int m,int s,string n){  

  • hour=h;  

  • min=m;  

  • sec=s;  

  • name=n;  

  • cout<<"call Time’s constructor by:"<<name<<endl;  

  • }  

  • int main(){  

  • Time *t1;  

  • t1=(Time*)malloc(sizeof(Time));  

  • free(t1);  

  • Time *t2;  

  • t2=new Time(0,0,0,"t2");  

  • delete t2;  

  • system("PAUSE");  

  • return EXIT_SUCCESS;  

  • }  

  • 结果:
    call Time’s constructor by:t2
    call Time’s destructor by:t2
    从结果可以看出,使用new/delete可以调用对象的构造函数与析构函数,并且示例中调用的是一个非默认构造函数。但在堆上分配对象数组时,只能调用默认构造函数,不能调用其他任何构造函数。




()在Windows操作系统中,()。
正确答案:B

怎么在windows10系统创建微软账户?
在Windows搜寻栏输入[你的]①,然后点选设置,然后点选[打开]②。点击[改用Microsoft账户登陆]③。请登入您用于其他Microsoft服务(如Outlook、Office等)的电子邮件、电话号码或Skype帐户④。如果您没有Microsoft账户,请点选[立即建立新账户!]⑤。请输入您的电子邮件信箱⑥(这个信箱将作为您的Microsoft账户...

如何在windows中开启读写权限?
在Windows系统中,开启读写权限相对比较简单。具体步骤如下:选定所需文件或目录,并右键单击。选择“属性”,进入文件属性窗口。在“安全”选项卡中,单击“编辑”。在“权限”选项卡中,单击“添加”。输入需要添加权限的用户账户名称,并单击“检查名称”。单击“确定”,在权限列表中找到需要的权限,并...

如何删除文件(在Windows操作系统中)
1.打开资源管理器。您可以通过桌面上的“此电脑”图标或者在任务栏的搜索框中输入“资源管理器”来打开资源管理器。2.导航到文件所在的位置。在资源管理器中,通过左侧的目录树或者地址栏,找到包含要删除文件的文件夹。3.选中要删除的文件。在文件夹中找到要删除的文件,可以通过单击文件来选中,也可以...

在windows操作系统中文档是指
“文档”通常是指包含文本、图片、表格等内容的电子文件。在Windows操作系统中,“文档”通常是指包含文本、图片、表格等内容的电子文件。这些文档可以使用文本编辑器(例如记事本)、办公软件(例如MicrosoftWord、Excel或PowerPoint)或其他应用程序创建和编辑,也可以通过互联网或其他方式下载或获取。在Windows...

我的电脑开机后一直显示在Windows那进不了系统
解决如下:一、xp、win7开机后按快捷键F8进入Windows高级选项菜单,选择正常启动Windows。二、进入系统后,右击计算机打开属性。三、进入系统页面后,点击左上角的“高级系统设置”。四、在高级选项页面,选择启动和故障恢复,点击“设置”按钮。五、取消勾选“显示操作系统列表的时间”,或者将时间改为0,...

简述在windows操作系统中,如何用快捷键复制文件或文件夹
在Windows操作系统中用快捷键复制文件或文件夹,有五种方法,分别是常用快捷键复制、鼠标右键复制、鼠标左键复制、通过剪贴板复制、通过拖放复制。第一种:常用快捷键复制 快捷键复制是指在选定要复制的内容后,使用“Ctrl+C”(复制)和“Ctrl+V”(粘贴)的组合键来完成复制和粘贴操作。这是最常用和...

Windows系统资源管理器窗口在哪里
在windows系统里面找到,具体找到方法是:操作工具:电脑windows10 1、首先在电脑空白处右击选择个性化。2、在左边开始在点击进去。3、找到选择哪些文件夹显示在开始菜单上点击进去。4、然后文件资源管理器打开。5、现在点击桌面开始菜单找到windows系统点击进去。6、最后里面就已经显示出来了文件资源管理器了。

电脑操作系统有哪些
1、Windows系列操作系 Microsoft Windows 系列操作系统是在微软给IBM机器设计MS-DOS的基础上设计的图形操作系现在的Windows系统,如Windows 2000、Windows XP皆是建立于现代的Windows NT内核。NT内核是由OS\/2和OpenVMS等系统上借用来的。Windows 可以在32位和64位的Intel和AMD的处理器上运行,但是早期的...

Win7开机卡在windows界面怎么解决?
方法一:进入安全模式修复 重启计算机,在进入Windows系统之前连续点击“F8”,选择“安全模式”。进入安全模式后,按下“Win键”和“R”键,打开运行窗口。在运行窗口中输入“msconfig”,然后点击“确定”。打开系统配置窗口,点击“引导”选项卡。在引导选项卡中,勾选“安全引导”复选框,然后点击“...

邢台县15533085766: 我的win7分区怎么会出现两个主分区?有图有真相! -
呈凝通络: 第一个是系统预留分区.无法删除的.不用在意.系统保留分区指的是Windows系统在第一次管理硬盘的时候,保留用于存放系统引导文件的分区.Windows Vista/7出于安全考虑,在新装Windows Vista/7系统过程中,如果利用光盘的分区工具给硬盘分区时,系统默认的将一部分(100-200M)的空间划分出来,不分配盘符(你在系统下看到的诸如C、D、E...之类的字母),用于存放系统引导文件(电脑启动时需要首先读取的一部分具有特殊功能的文件).

邢台县15533085766: win10 fedora 双系统 怎么分区 -
呈凝通络: 首先需要我们前往微软官网下载最新的 Windows 光盘镜像,在下载镜像的时候,切记要下载64位的哦.2 接下来还需要我们准备一个不小于 8G 版的 U 盘,用于制作安装 Windows 10 的安装 U 盘.3 另外,如果你之前已经在 Mac 上安装了 ...

邢台县15533085766: 我将“带宽限制”中的20改为0 使用100%的网速,因为平时Windows XP只会用80%的网速,自动保留20%的网速,这样做会不会有副作用
呈凝通络:绝对有!1 这个20%的默认预留带宽是windows系统出于系统稳定的考虑而预留的,在最大限度上优化了网络带宽和系统安全的平衡点.不建议释放此20%带宽.(数据溢出、冗余循环检查失败等 都是会导致的潜在问题.) 2 如果主网络本来就非常之卡,那么就算加上这20%的带宽通道,也不能见得网速有效果上的改观.毕竟这个预留带宽指的是信道的传输宽度而不是网络流量. 就好像您把路变宽了,可是路上还是只有那么点儿车,单位时间内通过的流量还是那么多,所以基本不会有明显的改观.

邢台县15533085766: win10分区c盘留多大? -
呈凝通络: Win10系统中,最好将C盘预留60GB的储存空间,防止电脑C盘预留空间过小而引起的电脑卡顿等情况.在c盘分区时要4K对齐,这样不会影响电脑的使用性能,还能做到最大化利用电脑的储存资源. 建议用户尽量给C盘预留充足一点的空间,...

邢台县15533085766: 硬盘安装windows7与linuxdeepin双系统 -
呈凝通络: 硬盘安装windows7与linuxdeepin双系统需要分步安装. 首先安装windows7系统: 1、在安装系统前,要注意先将电脑桌面上的一些文件放置到除C盘以外的其它盘符. 2、既然安装win7系统,需准备一个.gho的系统文件和一个硬盘安装器...

邢台县15533085766: 为什么windows预留了20%的网速,有什么作用,如果改为0,对电脑有害吗? -
呈凝通络: 这个20%带宽并非“保留”,是指在使用QoS 应用程序编程接口 (API)的程序最多在每个接口基础链路上可以申请预留20%的带宽,但是如果此程序并未充分利用,这些带宽仍然可以被其他程序所用. 在微软的《技术资源规划》中指出:除...

邢台县15533085766: 为什么有些文件是隐性的且不能删除? -
呈凝通络: System Volume Information 文件夹是一个隐藏的系统文件夹,"系统还原"工具使用该文件夹来存储它的信息和还原点.您的计算机的每个分区上都有一个 System Volume Information 文件夹.“System Volume Information”文件夹,中文名称...

邢台县15533085766: Windows 7原版系统中高级安装时只能分三个区,再多就没办法分了,这是怎么回事?系统预留的100m有用吗? -
呈凝通络: 因为文件跨区复制移动很慢,微软认为分三个区比较科学.Windows 7系统最多支持分三个区,安装完成也是如此,预留的100m硬盘空间是系统管理磁盘必需的,无法删除或合并,预留的硬盘空间大小因硬盘的容量和采用的存储技术而有所不同.需要更多分区,用其它软件进行分区,然后再安装Windows 7

邢台县15533085766: 请问:电脑开关机及运行太慢怎么解决? -
呈凝通络: 一、软件篇 1、设定虚拟内存 硬盘中有一个很宠大的数据交换文件,它是系统预留给虚拟内存作暂存的地方,很多应用程序都经常会使用到,所以系统需要经常对主存储器作大量的数据...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网