我正在创建一个函数,其唯一参数是指向 int** 的指针。在函数体中,我创建了一个自动变量并用一些值初始化它。然后我将此变量的地址分配给我的指针。代码看起来像这样:
void function(int ** p){
int count = 5;
*p = &count;
}
在 main() 中,我创建了一个指向 int * 的指针并为其调用此函数,即:
int main(){
int * p = NULL;
function(&p);
printf("MAIN = %d\n\n", *p); /* выводит 5 */
return 0;
}
还有一个问题——为什么线程退出函数后count变量内存中的数据没有被销毁?任何存储类的内存中的数据是否存在于整个程序的执行过程中?
因为在C语言中,程序员自己监控内存。不会自动初始化任何内容,也不会覆盖任何内容。未初始化或未正确初始化的变量包含垃圾。任何垃圾。
此外,如果程序员没有跟踪指针或初始化,就会发生所谓的未定义行为,其中程序可能会以不可预知的方式运行。