如果我在一组新的花括号中创建一个变量,那个变量是从结束括号上的堆栈中弹出的,还是会挂起直到函数结束?例如:
void foo() {
int c[100];
{
int d[200];
}
//code that takes a while
return;
}
Run Code Online (Sandbox Code Playgroud)
会不会d
是在占用内存code that takes a while
部分?
C 中是否有语法让编译器知道某个变量已完成,并且此后将不再使用,从而可能释放寄存器?我宁愿不使用函数调用,因为它们很昂贵。
我知道我可以重用一个变量,但这会导致歧义(这个变量是什么意思?)。
例子:
first_byte = somestring[0];
/*[do a couple of operations on first_byte]*/
done_for(first_byte);
second_byte = somestring[1];
Run Code Online (Sandbox Code Playgroud)
我没有将数组+索引直接提供给我的操作的原因是我不确定是否所有编译器都会优化它以使用临时寄存器而不是每次都转换地址。
不,我不能使用像“temp”这样的名字。这是关于读取打包数据结构。