c语言 系统是怎么知道一段内存的长度的?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言 系统是怎么知道一段内存的长度的?相关的知识,希望对你有一定的参考价值。

我new了个实体,c是怎么知道他在内存里的长度,怎么知道这个实体储存在内存里的数据何时不再属于这个实体

系统自己是不知道你要多大的内存的,也不是它决定的,这个所需内存的大小已经在程序里,系统根据你编译好的指令申请内存,决定申请多大的内存在C/C++代码编译阶段。
假如有以下代码:
class T

public:
int a;
float b;
;
然后定义一个对象:
T t = new T;
编译器看到这个代码,它就会进行翻译工作,它会翻译成二进制代码告诉系统给这个变量分配多大内存,这个大小编译器是知道的就是sizeof T = 4+4=8个字节。
编译会根据你对象定义算出大小,当然有时候考虑字节对齐实际大小会大于内部成员数据大小之和,编译器会算出来。
参考技术A 1) C语言只能用malloc分配内存,没有new
2)语言是不知道长度的,C或者C++没有提供这种机制
参考技术B 看下内存对齐的知识你就明白了,具体你可以查询一下资料。

以上是关于c语言 系统是怎么知道一段内存的长度的?的主要内容,如果未能解决你的问题,请参考以下文章

C语言,如何实现搜索内存数据

C语言编程怎么将一个数组截断成几个数组

C语言中计算数组长度的方法是啥

c语言怎么获取数组的长度

c语言中如何自定义数组长度

如何用C语言播放一段音频呢