C++语言程序设计 湖南科技大学 程序的内存分配 例:∥ main cpp inta=0;全局数据区 char*p1;全局数据区 main( intb;栈区 char s[]=“abc”,;s栈区;abc在常量区 char*p2;栈区 char*p3=“123456”,:123456在常量区,p3在栈区。 static int c=0;全局数据区 p1=(char*)malloc(10 2=(char *)malloc(20 分配得来得10和20字节的区域就在堆区 strcpy(p1,"123456"):123456放在常量区,编译器 能会将它与p3所指向的123456"优化成一个地方
C++语言程序设计 湖南科技大学 11 程序的内存分配 例://main.cpp int a = 0; 全局数据区 char *p1;全局数据区 main() { int b; 栈区 char s[ ] = “abc”; s栈区; abc在常量区 char *p2; 栈区 char *p3 = “123456”; 123456在常量区,p3在栈区。 static int c =0; 全局数据区 p1 = (char *)malloc(10); p2 = (char *)malloc(20); 分配得来得10和20字节的区域就在堆区。 strcpy(p1, "123456"); 123456放在常量区,编译器可 能会将它与p3所指向的"123456"优化成一个地方。 }
C++语言程序设计 湖南科技大学 对泉的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止
C++语言程序设计 湖南科技大学 12 对象的生存期 对象从产生到结束的这段时间就是 它的生存期。在对象生存期内,对象将 保持它的值,直到被更新为止
C++语言程序设计 湖南科技大学 静态生存期 对 象·这种生存期与程序的运行期相同。 的。在文件作用域中声明的对象具有这种 生生存期。 存。在函数内部声明静态生存期对象,要 期冠以关键字 static
C++语言程序设计 湖南科技大学 13 静态生存期 ⚫ 这种生存期与程序的运行期相同。 ⚫ 在文件作用域中声明的对象具有这种 生存期。 ⚫ 在函数内部声明静态生存期对象,要 冠以关键字static 。 对 象 的 生 存 期
C++语言程序设计 湖南科技大学 例 对 #includeiostream. h> 象的生存期 inti=5;/文件作用域 int main( cout< i=Kiendl return O 具有静态生存期
C++语言程序设计 湖南科技大学 14 #include<iostream.h> int i=5; //文件作用域 int main() { cout<<"i="<<i<<endl; return 0; } i具有静态生存期 对 象 的 生 存 期 例
C++语言程序设计 湖南科技大学 动态生存期 对 象 ●块作用域中声明的,没有用 static修 的 生饰的对象是动态生存期的对象(习惯 存称局部生存期对象)。 期 开始于程序执行到声明点时,结束于 命名该标识符的作用域结束处
C++语言程序设计 湖南科技大学 15 动态生存期 ⚫ 块作用域中声明的,没有用static修 饰的对象是动态生存期的对象(习惯 称局部生存期对象)。 ⚫ 开始于程序执行到声明点时,结束于 命名该标识符的作用域结束处。 对 象 的 生 存 期