[C++应用程序性能优化]内存分配失败处理
来源:互联网 发布:淘宝服务中心人工服务 编辑:程序博客网 时间:2024/05/15 05:38
c++中new_handler()函数,通过set_new_handler()安装到系统上,new_handler()要执行下述操作一种:
(1)使new有更多的内存可用,然后返回
(2)抛出一个bad_alloc()或其派生的异常
(3)调用abort()或exit()退出
#include <stdio.h>#include <new>using namespace std;char *gPool;void my_new_handler();int main(){ set_new_handler(my_new_handler); gPool = new char[100*1024*1024]; if (gPool != NULL) { printf("preserve 101MB memory at %x.\n", gPool); } char *p = NULL; for (int i = 0; i < 20; i++) { p = new char[100*1024*1024]; printf("%d*100M, p = %x\n", i+1, p); } printf("Done.\n"); return 0;}void my_new_handler(){ if (gPool != NULL) { printf("try to get more memry...\n"); delete []gPool; gPool = NULL; return; } else { printf("I can not help...\n"); throw bad_alloc(); } return;} #include <stdio.h>#include <stdlib.h>#include <new>using namespace std;int main(){ char buffer[100]; char *p = new(buffer) char[20]; printf("buffer:\t%x\np:\t%x\n", buffer, p); system("pause"); return 0;} #include <stdio.h>#include <stdlib.h>#include <new>using namespace std;void* operator new(size_t n, char *file, int line){ printf("size: %d\n new at %s, %d\n", n, file, line); return ::operator new(n);}void operator delete(void *p, char *file, int line){ printf("delete at %s, %d\n", file, line); ::operator delete(p); return;}#define new new(__FILE__, __LINE__)int main(){ char *p = new char[10]; operator delete(p, __FILE__, __LINE__); system("pause"); return 0;}
- [C++应用程序性能优化]内存分配失败处理
- 内存分配失败处理
- 内存分配失败的处理
- 内存分配失败错误处理
- 内存分配失败错误处理
- new 内存分配失败处理
- 内存分配失败错误处理
- 处理new分配内存失败情况
- 处理new分配内存失败情况
- 处理new分配内存失败情况
- PTVS的内存分配失败及处理
- 处理new分配内存失败情况
- C\C++应用程序性能优化
- 程序性能优化之 内存分配影响
- C++应用程序性能优化(书)内存管理
- [转]C++ 应用程序性能优化----内存池
- C++ 应用程序性能优化 -- 内存池
- C++ 应用程序性能优化---内存池技术
- C#调用返回C++指针的缓冲区,并释放
- Codeforces Round #107 (Div. 2)——B
- 哈哈.....番茄炒鸡蛋已小有进步
- Stanford Online Machine Learning 学习笔记1——单变量线性回归
- des
- [C++应用程序性能优化]内存分配失败处理
- 探索推荐引擎(文摘)
- 以太网 串行管理接口 SMI MDIO
- JavaSE第六十讲 EnumSet与EnumMap详解
- 你的论文,你做主—研究生毕业论文的写作过程
- 表格(普通应用)
- nessus offline update
- uboot 下 cmd 出问题
- Ubuntu root用户自动登录系统