棧:程序每調用一個函數后,建立一個新的棧幀保存當前調用函數的所有局部變量,也就是說每個函數里面的變量都是在這個函數的棧幀內,
堆:程序運行過程中,向操作系統(OS)申請的系統內存(Mem),系統返回堆空間的地址。
棧幀:變量的所在地 ,變量可直接存取數值
堆:向系統申請的內存空間,通過函數內的指針變量,賦值指針申請內存返回的地址,用于存取堆空間里的數據
不同之處:
棧幀在函數結束時會自動釋放,
堆則需要主動申請釋放,或者等程序運行結束。
操作系統會自動釋放程序運行期間申請的內存空間。
詳細請看操作系統原理,編譯原理,或者反匯編原理。
老師講的沒有錯,只不過沒基礎的會懵。
若有錯誤請指出。滿字
堆:程序運行過程中,向操作系統(OS)申請的系統內存(Mem),系統返回堆空間的地址。
棧幀:變量的所在地 ,變量可直接存取數值
堆:向系統申請的內存空間,通過函數內的指針變量,賦值指針申請內存返回的地址,用于存取堆空間里的數據
不同之處:
棧幀在函數結束時會自動釋放,
堆則需要主動申請釋放,或者等程序運行結束。
操作系統會自動釋放程序運行期間申請的內存空間。
詳細請看操作系統原理,編譯原理,或者反匯編原理。
老師講的沒有錯,只不過沒基礎的會懵。
若有錯誤請指出。滿字
2017-11-05
調用默認構造函數實例化對象 Student stu(); 后面有擴號編譯將報錯,不加擴號Student stu;編譯正常。
2017-10-17
int main(void)
{
// 通過new方式實例化對象*stu
Student *stu = new Student();
// 更改對象的數據成員為“慕課網”
stu->setName("慕課網");
// 打印對象的數據成員
stu->getName();
Student stu1("慕課網");
Student stu2= stu1;
stu2.getName();
Student stu3(stu1);
delete stu;
stu = NULL;
return 0;
}
類外定義~~~
{
// 通過new方式實例化對象*stu
Student *stu = new Student();
// 更改對象的數據成員為“慕課網”
stu->setName("慕課網");
// 打印對象的數據成員
stu->getName();
Student stu1("慕課網");
Student stu2= stu1;
stu2.getName();
Student stu3(stu1);
delete stu;
stu = NULL;
return 0;
}
類外定義~~~