c++函数内变量的入栈问题

比如定义了这样的一个函数

void test() {

    std::cout << "---test stack---" << std::endl;
    int a = 2019;
    char ch[] = "qwerty";
    int b = 2020;
    char c='c';
    std::cout << "---test stack end---" << std::endl;
}

为什么我通过打印各个变量的地址发现,变量在栈中的地址不是按照a,ch,b,c定义的顺序入栈的,更像是系统自动重新分配了各个变量在栈中的位置,这是为啥

地址是随机分配的,所以不一定有顺序

有可能出现连续分配的,但是前提是栈空间从分配起点开始有足够的闲余空间来划分具体由分配算法来决定,
而在运算时栈时常划分空间和回收空间就会导致闲余空间不连续
并且栈空间十分有限,在哪能把变量安排进去就安排
你可以试试结构体中的每个变量是不是连续的