内存单元是如何组织在RAM上的,以及它与c++有什么关系

how are the memory cells organized on a RAM and how is it related to C++?

本文关键字:c++ 关系 什么 单元 何组织 上的 RAM 内存      更新时间:2023-10-16

据我所知,RAM被组织成一个由行和列单元格组成的网络,每个单元格包含1个字节。此外,每个单元都标有一个十六进制的地址存储器。是这样吗?现在,当运行c++程序时,我认为它使用RAM作为存储的一种方式。在这种情况下,由于c++中的char类型是存储的基本单位,那么char的大小是否与单元格(1字节)完全相同?一个字符的大小取决于一个单元格的大小(如果一个单元格的大小不是1字节)?它依赖于编译器吗?非常感谢。

很容易将RAM想象成一个由行和列组成的网络。这也是大多数计算机科学课程教授学生的方式,对于大多数目的来说,这在概念层面上做得很好。在编写c++程序时必须知道的一件事是两种不同内存的概念:堆栈和堆。堆栈是在变量进入作用域时存储变量的内存。当它们超出范围时,它们就被移除。可以把它看作是一个堆栈实现(FIFO)。

现在,堆内存稍微复杂一些。这与变量的作用域没有任何关系。您可以设置一个固定的内存位置来包含一个特定的值,它将一直留在那里,直到您释放它。您可以使用'new'关键字来设置堆内存。例如:int* abc = new int(2);这意味着指针abc指向一个值为'2'的堆位置。在使用完这些内存后,必须使用delete关键字显式地释放这些内存。如果不这样做,将导致内存泄漏。

在C中,像a这样的字符常量的类型实际上是int,其大小为4。在c++中,类型为char,大小为1。大小不依赖于编译器。int、float等类型的大小取决于系统的配置(16/32/64位)。使用语句:

int a=5;
cout<<sizeof(a)<<endl;