C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 11:43:59

C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=
C语言的函数,
例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?
void add(int x)
{
\x09int y=x+1;
\x09printf("&x=%d ,&y=%d ,x=%d ,y=%d\n",&x,&y,x,y);
}

C语言的函数,例如,如下的函数,我的问题是,是不是只有在调用函数时,才会给函数里的变量分配内存空间.函数调用完毕后,其变量的内存空间就释放?void add(int x){\x09int y=x+1;\x09printf("&x=%d ,&y=%d ,x=
C语言里面,
全局变量在程序一启动就分配好内存,程序结束时释放.
局部变量(函数里面的临时变量),在该函数执行时创建,函数执行完就释放.
解读:LZ这个问题主要牵涉的是堆栈的知识 每一个线程在执行的时候都有自己的一个堆栈结构.
代码执行进入一个函数,可以认为是进入一个栈,那么函数里面的变量都是在栈里面创建,代码执行完函数,退到调用函数的地方时,这个栈就消亡,所有变量也就消亡了.
而使用new 创建的数据,是创建在堆上的,堆不会受栈的消亡而释放,所以函数执行完了,里面new的数据依然有效,必须手动delete才能释放(c++ 里面的new 和 delete 对应 C里面的 malloc,free)