C++ 记忆分配心理地图澄清

C++ 记忆分配心理地图澄清,c++,C++,我想澄清我在记忆分配上的思维地图 假设我有以下数组: int arr [] = {1,2,3}; 假设每个整数将占用内存中的4个字节 这样整数的内存地址可以是: HHH01 hh05 HHH09 arr的内存块会是每个整数的内存块的超集吗?严格来说,IIRC,你的问题的答案是未定义的,这很重要,因为深入未定义的行为会导致一些最难和最模糊的bug。在CPP标准中,指针和数组不一定要以任何特定的方式映射到内存中。只要他们能够正确地执行必要的算法来查找和取消对正确元素的引用,等等。。。除此之外的任何

我想澄清我在记忆分配上的思维地图

假设我有以下数组:

int arr [] = {1,2,3};
假设每个整数将占用内存中的4个字节

这样整数的内存地址可以是:

HHH01 hh05 HHH09


arr
的内存块会是每个整数的内存块的超集吗?

严格来说,IIRC,你的问题的答案是未定义的,这很重要,因为深入未定义的行为会导致一些最难和最模糊的bug。在CPP标准中,指针和数组不一定要以任何特定的方式映射到内存中。只要他们能够正确地执行必要的算法来查找和取消对正确元素的引用,等等。。。除此之外的任何东西都应该被认为是安全地抽象出来的


话虽如此。。。我认为对于大多数(如果不是全部?)实际目的来说,这个问题的答案是你的理解是正确的。如果您是“代码”> CUT,请记住考虑数组中的类型的一致性需求。我认为您的意思是“代码> int ARR[]/CODE >。这取决于内存块的含义。根据阵列的分配方式,可能会有额外的内存开销,这与以后如何清理阵列有关。您是否将其作为
arr
的“内存块”的一部分,这是一个解释问题。就语言而言,这种开销并不是目标的一部分。@FrançoisAndrieux谢谢你的澄清,我编辑了我的帖子。普通的数组分配如何?@NicholasRawitcher数组的内存表示由元素的内存表示组成。因为数组的状态完全由它的元素定义,所以它们本身不需要任何内存。