首页 > 代码库 > 无法分配内存,异常退出

无法分配内存,异常退出

    当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);
}