c 中是否保证变量的连续内存分配?

问题描述 投票:0回答:1
#include<stdio.h>
int main()
{
    int a = 1, b = 10, c = 2;
    int *arr[] = {&a, &b, &c}; 
    printf("%d\n", *arr[arr[1]-arr[0]]);
    return 0;
}

我在这里得到输出

10
。通过这里的输出,我了解变量
a b c
连续分配的内存。该输出是静态的还是取决于系统?我可以期望在另一个系统中得到相同的输出吗?并且保证这个变量的连续内存分配?这里我使用gcc编译器。

c variables memory
1个回答
0
投票

c 中是否保证变量的连续内存分配?

没有。

此输出是静态的还是取决于系统?

否,因为这取决于系统。该系统有时可能会按预期“工作”,但有时则不然。

我可以期望在另一个系统中得到相同的输出吗?

其他系统可能有所不同。即使相同的系统在不同的运行中也可能有所不同。

并且这个变量的内存分配连续性是有保证的吗?

没有。

© www.soinside.com 2019 - 2024. All rights reserved.