我在Dev C ++ IDE中编写了这个程序。我原以为它可能会崩溃。但它显示正确的输出。有些人可以解释一下如何在这里分配内存。为什么这样做。
int main()
{
int i=10;
double d=3333333.555 ;
i=d+d;
printf(" Value of I after assignment %d",i);
getch();
}
答案 0 :(得分:0)
在C中,局部变量和参数保存在寄存器和堆栈中。这意味着只要您在堆栈中有可用空间,它们就会被放在那里,没有明确的分配。
实际上,所有程序都以默认分配的堆栈开头,这就是为什么C程序不需要更多内存的原因。
堆栈如何工作?嗯...一般来说,有一个寄存器用于保存指向一块内存的指针。无论何时进入函数,都会移动该寄存器,使其现在指向堆栈的空闲部分,当您离开该函数时,堆栈寄存器的旧值将被恢复。
内部工作更棘手,但这是一般的想法。