变量在什么时候真正分配空间?
各位朋友好,我对C的运行机制一直很不理解,所以想请教几个基本的问题。1 全局变量和静态变量在是不是编译时就已经占用开辟的空间了?如果有初始化,是不是已经开始赋值了?
2 动态变量(局部和形参)在什么时候占用开辟的空间?如果有初始化,那是不是在编译时就赋值了?
3 我在一本参考书上了解数组不能动态分配空间,在编译时就必须确定元素个数,那这个和C++里用 NEW动态分配数组空间冲突吗?具体如下:
class string {
char * contents;
int size;
public:
string(int sz)
{
contents = new char[sz];//注1
}
~string(){delect contents;}
};
main()
{
string s1(10);
string s2(20);
s1=s2;
return 1;
}
注1要动态的分配空间,形参变量 sz 只能在程序运行时才能确定呀,但是数组在编译时就要确定大小?
难道编译时,s1(10)已经把执行 sz=10? 但是这是编译阶段,怎么会执行程序呢?
以上3个问题实在把握难住了,请前辈指点!小弟先行谢谢啊!
[此贴子已经被作者于2007-9-23 14:42:47编辑过]