在C中有快速指针作为堆栈? (没有间接但仍然堆)

时间:2012-07-17 09:18:50

标签: c reference

我正在从IL(Compiled C#\ VB代码)创建一个反编译器。有没有办法在C中创建引用?

修改
我想比堆栈之类的指针更快。有这样的事吗?

2 个答案:

答案 0 :(得分:6)

引用只是一个语法糖涂层指针 - 指针就可以了。

答案 1 :(得分:1)

堆栈指针是两个完全独立的概念。

引用就像一个指针,一种访问/传递变量而不复制它的方法。 另一方面,堆栈和堆是变量存在的两个不同的地方。 变量是否应该存在于堆栈上或堆上的决定完全独立于传递它的方式。

  • 如果您需要一个局部变量,并且生命周期自动耦合到您的函数范围,请在堆栈中声明它。分配很快,但是当函数范围结束时,对象消失了。考虑到这一点,您可以通过值或通过指针将变量传递给其他函数。
  • 如果需要一个能够在函数范围内存活的变量,则需要将其设置为全局(或静态),或者将变量动态地放在堆上。分配有点慢,但一旦它在那里你可以像其他一样使用它。您也可以通过值或指针传递它。 (请记住,您最终需要取消分配动态创建的对象。)

如果堆分配确实是性能瓶颈,则应确保在可能的情况下使用自动变量(在堆栈上)。然后,分析您的分配模式。最后optimize your allocation strategy