摘要:
1.首先我们看第一个例子: [cpp] view plaincopy #include <iostream>using namespace std; typedef char byte; int main() { byte *buffer = new byte[1000]; int *pi = new(buffer)int[10]; pi[0] = 3; cout<<(int)*... 阅读全文
posted @ 2013-03-11 20:35
JustinYo
阅读(435)
评论(0)
推荐(0)
摘要:
单个class的new的重载重载的 new、delete(或者 new[]、delete[])操作符必须是类的静态成员函数(为什么必须是静态成员函数,这很好理解,因为 new 操作符被调用的时候,对象还未构建)或者是全局函数,函数的原型如下:void* operator new(size_t size) throw(std::bad_alloc);// 这里的 size 为分配的内存的总大小void* operator new[](size_t size) throw(std::bad_alloc);void operator delete(void* p) throw();void oper 阅读全文
posted @ 2013-03-11 20:05
JustinYo
阅读(3439)
评论(0)
推荐(0)
摘要:
逆向调试不是逆向执行,而是模拟逆向执行。在打开逆向调试开关后,程序的执行会记录下程序运行的详细状态轨迹(想象一下把图灵机运行时的每一步纸带 的状态记录下来)。这些状态就构成了逆向调试的基础。 逆向调试的预期用处是,因为程序bug的发生处和表现处一般会有距离,那么在程序bug表现处回溯执行,就可以确定地找到bug的真正原因。这可是 很有用的哦,因为这可以避免多次运行程序,有时还徒劳武无功,尤其是在... 阅读全文
posted @ 2013-03-11 19:31
JustinYo
阅读(1546)
评论(0)
推荐(0)
摘要:
C++平台有四种方式动态索求和释放内存 new和delete编译器帮你做的事情 实际上new申请的空间是由全局new ---->::operator new(size) 阅读全文
posted @ 2013-03-11 17:15
JustinYo
阅读(263)
评论(0)
推荐(0)
摘要:
在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。Linux下准确的说是RedHat下应该如何查看呢,命令是:export如果你想查看某一个名称的环境变量,命令是:echo $环境变量名,比如:echo $Oracle_HOMEWindows对应的命令是:set 环境变量名。 阅读全文
posted @ 2013-03-11 16:18
JustinYo
阅读(492)
评论(0)
推荐(0)
摘要:
gdb调试的时候突然就遇到一个问题l xxx.cpp:512 没有问题但是b xxx.cpp:512的时候就会出现Cannot access memory at address 0xxxxx的问题原因是什么? 阅读全文
posted @ 2013-03-11 15:20
JustinYo
阅读(7772)
评论(1)
推荐(0)
摘要:
C++中虚函数与晚绑定的编译器实现编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数 的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函 数调用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在V TA B L E表中查找函数地址的代码,这样就能调用正确的函数使 晚捆绑发生。为每个类设置V TA B L E、初始化V P T R、为虚函数 阅读全文
posted @ 2013-03-11 13:27
JustinYo
阅读(925)
评论(0)
推荐(0)
浙公网安备 33010602011771号