微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 ncurses 导致“initscr”中断?

如何解决如何使用 ncurses 导致“initscr”中断?

我知道这是一个奇怪的问题,但我想获取提到的“initscr”函数错误 by the doc(在 stderr 上获取无效指针和错误消息)以测试包装器是否正常工作。

但是我没有找到任何有关此的信息。我目前正在使用 ncurses 6.2。

经过一些研究,我发现无效指针实际上是一个 NULL,而不仅仅是一个指向任何地方的空指针。

但我无法破坏功能...

如果有人知道如何帮助我解决这个问题,请随时发表评论

解决方法

以下程序:

#include <curses.h>
#include <malloc.h>
#include <stdlib.h>

bool my_malloc_disabled;
void *malloc(size_t size) {
    if (my_malloc_disabled) {
        return NULL;
    }
    void *__libc_malloc(size_t);
    return __libc_malloc(size);
}
int main() {
    my_malloc_disabled = 1;
    initscr();
}

做:

$ gcc file.c -lcurses
$ ./a.out
Error opening allocating $TERM.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。