相关疑难解决方法(0)

在C中,大括号是否作为堆栈框架?

如果我在一组新的花括号中创建一个变量,那个变量是从结束括号上的堆栈中弹出的,还是会挂起直到函数结束?例如:

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 memory stack

152
推荐指数
4
解决办法
9357
查看次数

将变量标记为“完成”

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”这样的名字。这是关于读取打包数据结构。

c variables cpu-registers

1
推荐指数
1
解决办法
77
查看次数

标签 统计

c ×2

cpu-registers ×1

memory ×1

stack ×1

variables ×1