C语言的变量都一定要放在stack上吗?# Programming - 葵花宝典
u*u
1 楼
好象现在看到的C编译器都把变量放在stack上,把动态内存放在heap上。比如:
foo() {
int a,b[100];
int *pa;
pa = new int[200];
}
a,b[100],pa都是在stack上的变量,pa指向一块在heap上的内存。特别是b[100],是存在
stack上的100个int大小的内存块。
我的问题是,是不是C规定函数的变量“必须”放在stack上?比如,可以不可以有一个编
译器,把b[100]解释成一个存在stack上的int *, 指向一个heap上100个int大小的内存块
(当然,这块内存的分配,释放由编译器实现)。
这样的一个C/C++编译器会不会违反C的什么规定?可以不可以做这么一个compiler?请高
手详细解释一下吧。谢谢。
foo() {
int a,b[100];
int *pa;
pa = new int[200];
}
a,b[100],pa都是在stack上的变量,pa指向一块在heap上的内存。特别是b[100],是存在
stack上的100个int大小的内存块。
我的问题是,是不是C规定函数的变量“必须”放在stack上?比如,可以不可以有一个编
译器,把b[100]解释成一个存在stack上的int *, 指向一个heap上100个int大小的内存块
(当然,这块内存的分配,释放由编译器实现)。
这样的一个C/C++编译器会不会违反C的什么规定?可以不可以做这么一个compiler?请高
手详细解释一下吧。谢谢。