摘要: #include<iostream.h>void main() { char a[]="abc";栈 char b[]="abc";栈 char* c="abc";abc在常量区,c在栈上。 char* d="abc"; 编译器可能会将它与c所指向的"abc"优化成一个地方。 const char e[]="abc";栈 const char f[]="abc";栈 cout << a << " " 阅读全文
posted @ 2012-04-16 19:55 Gentoo 阅读(629) 评论(0) 推荐(0) 编辑
摘要: C++内存管理——内存分类 MoaKap 在编写程序过程中,程序员必须清楚程序内存的分配机制,合理进行内存管理,这样才能得到高效的程序。同时,如果对C++内存分配基本概念不理解,使用不当,一方面浪费了宝贵的内存资源,降低了程序运行效率,另一方面还会造成程序中意想不到的错误。在C++程序中,把内存分为4类,程序存储区、静态数据存储区、运行时栈、自由存储区或堆:1、 程序存储区包含所有函数及成员函数的机器指令。函数一旦被编译,即被编译为特定得机器指令,存放在程序存储区。当程序运行时,从内从中读取并执行指令。这部分内存不允许更改,在一般情况下,指针不会指向内存代码段中的位置。但也有特殊,如指向函数的 阅读全文
posted @ 2012-04-16 17:09 Gentoo 阅读(280) 评论(0) 推荐(0) 编辑
摘要: /*第一种情况*/string p[6]="Plato";*p="abc";//声明string数组时需带大括号;/*第二种情况*/string p[6]={"Plato"}; *p="abc";//*p指向的是string的第一个元素p[0],而p[0]元素为string类型,正好被*p整个替换掉,所以此时p[0]和*p相同且都为“abc”;/*第三种情况*/char p[5]="Plato";*p="abc";//字符数组出现溢出错误;/*第四种情况*/char p[6] 阅读全文
posted @ 2012-04-16 16:10 Gentoo 阅读(148) 评论(0) 推荐(0) 编辑
摘要: // 指针常量和常量指针//1)指针常量可以通过指针改变变量的值 Int x =2; Int *const point =&x; *point =4; //now x = 4 void main() ...{ char*const str ="china"; *str ="yangzhou"; // right 可以修改字符串的内容 str ="another"; // wrong } //2)常量指针不可以 Int x =2; Const int* point =&x; *point =4; // wrong voi 阅读全文
posted @ 2012-04-16 13:49 Gentoo 阅读(247) 评论(0) 推荐(0) 编辑