内存单元是如何组织在RAM上的,以及它与c++有什么关系
how are the memory cells organized on a RAM and how is it related to C++?
据我所知,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;
相关文章:
- C++GTKMM gui循环依赖关系
- this_thread::sleep_for和计时时钟之间的关系是否由C++11标准指定
- Doxygen - 如何在不生成图形的情况下生成文本调用关系结果
- 我已经建立了递归关系,它找到了两个字符串之间最长的连续公共字符串,我怎么能跳过其中一个字符串中的一个字符
- 在 c++ 中对字符串进行操作的关系运算符无法按预期工作
- 如何记住这种递归关系?
- 如何在头文件中声明类模板(由于循环依赖关系)
- 移动语义和深层/浅层复制之间有什么关系?
- 如何在不知道对应关系的情况下在字符串中搜索字符并将其分配给另一个字符?
- 对在不同二进制文件中创建的对象文件的依赖关系
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 使用Bazel构建具有不同编译器/链接器选项的C/C++依赖关系
- OpenVINO - 推理库插件 libMKLDNNPlugin.so 无法解析依赖关系
- 模拟测试中类的依赖关系
- 关于记忆后这种递归关系的时间复杂度
- C++模板方法中的循环依赖关系
- 解析正交模块的依赖关系
- 超市管理系统的类别之间应该是什么关系?
- glMapBufferRange(..) 中的偏移量关系和 glDrawArraysInstanced(..) 中的第一
- 如何在 Mac OS 上安装 boost-mpi 及其对 clang 的依赖关系?