随笔分类 - C++
从基础开始学习C++
我来管理C++内存(1)
摘要:最近一直对内存管理比较的模糊,因此专门学习了一下,下面是我的一些心得和体会拿来和大家一起分享如有不同的见解期望大家的指点。我们都知道在C++内存管理中有5个分区(如有不知道的推荐阅读:http://www.cnblogs.com/qiubole/articles/1094770.html),也正因为种类太多才弄的比较的模糊。为了方便区分我这里只用了堆和栈来识别他们的功能,事实上也是这么回事,广义的栈是指那些系统自动申请和回收的内存空间只在他们相应的作用域内存在;堆是指那些使用new/delete操作符以及malloc()/free()函数手动申请和释放的动态内存空间。在C++中想要安全而随意的
阅读全文
类型转换(3)
摘要:reinterpret_cast <new_type> (expression) :该转换不考虑expression的类型相当于地址空间的从新分配,参见C++标准转换运算符reinterpret_cast。 typedef int (*FunctionPointer)(int); int value = 21; FunctionPointer funcP; funcP = reinterpret_cast<FunctionPointer> (&value); funcP(value); 这个过程编译器都成功的编译通过,不过一旦运行我们就会得到"EXC_
阅读全文
类型转换(2)
摘要:const_cast转换符是用来移除变量的const或volatile限定符const_cast就可以直接使用显示转换(int*)来代替:#include<iostream> using namespace std;int main() { const int a = 1; //a的值永远不变 const int* t = &a; //t的值永远不变,但是*t可能改变 int* b = const_cast<int*>(t);//效果和int* b = (int*)(t)一样 *b = 2; cout<<a<<"\t"
阅读全文
类型转换(1)
摘要:在C++中类型转换的类型有:传统转换方式及用户自动转换、const_cast、reinterpret_cast、static_cast、dynamic_cast显然设置这样的语法当然是有他们自己无可替代的作用了,参见C++类型转换方式总结 。在C++中我觉得数据类型是一个比较抽象的概念,我不知道是不是可以这样说:凡是可以用typedef来重命名的类型都可以看成是数据类型typedef short Int16;typedef int Int32;typedef long int64;typedef int* pInt;typedef int& rInt;typedef const int
阅读全文
浙公网安备 33010602011771号