当你在C或C++中声明int类型的变量x时,我知道它将占用4字节的内存。为此变量分配了4个内存地址。我的问题是我能看到分配给这个变量的所有四个内存地址吗?我知道这不是一个典型的问题,但我很好奇。或者它总是100%的只是内存地址&x和接下来的3位?如果它是内存地址1000,下一个将是1001002和1003?它有没有偏离这一点?
也就是说我把x设为5;
这是否意味着在这个存储位置1000到1002,它将被零填充,在1003中,在最右边的位置有一个101(5的二进制表示)?
谢谢你

最佳答案

int可以是4个字节,但这实际上取决于编译器。因此,为什么会有特定的大小类型,比如uint32_t。但是为了参数起见,我们假设int是四个字节。
是的,四个字节是连续的。所以您正确地认为&x和接下来的三个字节是变量的位置。
但是,您认为最右边的字节是最不重要的,这一假设仅适用于big-endian机器。在一个小小的endian架构(如x86)上,最左边的字节将包含101来表示数字5。

关于c++ - C/C++中的内存分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25594960/

10-11 22:44
查看更多