据我所知,RAM 的组织方式就像一个由行和列单元组成的网络,每个单元包含 1 个字节。此外,每个单元都带有以十六进制系统编写的地址存储器的标签。是这样吗?现在,在运行 c++ 程序时,我想它使用 RAM 作为存储手段。在这种情况下,由于 c++ 上的 char 类型是存储的基本单位,这个 char 的大小是否与单元格(1 字节)完全相同?, char 的大小是否取决于单元格的大小(在如果单元格的大小不是 1 字节)?,它取决于编译器吗?太感谢了。
问问题
3136 次
1 回答
0
很容易将 RAM 可视化为行和列的网络。这也是大多数 CS 课程教学生的方式,并且对于大多数目的而言,这在概念层面上会做得很好。编写 C++ 程序时必须知道的一件事是 2 种不同内存的概念:堆栈和堆。堆栈是在变量进入作用域时存储变量的内存。当它们超出范围时,它们将被删除。将此视为堆栈实现(FIFO)。
现在,堆内存稍微复杂一些。这与变量的范围没有任何关系。你可以设置一个固定的内存位置来包含一个特定的值,它会一直留在那里直到你释放它。您可以使用“new”关键字设置堆内存。例如: int* abc = new int(2); 这意味着指针abc
指向值为“2”的堆位置。delete
使用完此内存后,您必须使用关键字显式释放内存。不这样做会导致内存泄漏。
在 C 中,字符常量 like 的类型a
实际上是 a int
,大小为 4。在 C++ 中,类型是char
,大小为 1。大小不依赖于编译器。int、float 等的大小取决于系统的配置(16/32/64 位)。使用语句:
int a=5;
cout<<sizeof(a)<<endl;
确定系统中 int 的大小。
于 2013-01-12T08:52:22.067 回答