当4GB的内存被使用的一干二净,我们该考虑这个垃圾的程序还有没有价值?
当堆栈存放不下一个数组,我们是否该考虑我们是否放任我们的代码范围。
当用户空间无法动态创建内存块,我们该考虑是什么占用了整个系统,而不是去考虑如何释放
已经使用的空间。在程序中无法创建内存块,而需要遍历所有的块是否可以释放,带来的代价是否
非常高昂?
非常赞同iftop源码的方式,直接异常中断程序:
void *xmalloc(size_t n) {
void *v;
v = malloc(n);
if (!v) abort();
return v;
}
/* xcalloc:
* As above. */
void *xcalloc(size_t n, size_t m) {
void *v;
v = calloc(n, m);
if (!v) abort();
return v;
}
/* xrealloc:
* As above. */
void *xrealloc(void *w, size_t n) {
void *v;
v = realloc(w, n);
if (n != 0 && !v) abort();
return v;
}
/* xstrdup:
* As above. */
char *xstrdup(const char *s) {
char *t;
t = strdup(s);
if (!t) abort();
return t;
}
/* xfree:
* Free, ignoring a passed NULL value. */
void xfree(void *v) {
if (v) free(v);
}
原文地址:http://5228690.blog.51cto.com/5218690/1408636