GLFWwindow * window 是否仍然指向有效的 glfw 对象?

Does GLFWwindow * window still points to valid glfw object?

我初始化 Glfw,创建 window 并设置滚动回调:

GLFWwindow * window = glfwCreateWindow (...);
glfwSetScrollCallback(window, GlScrollInput);

我在其他地方有功能:

GlScrollInput (GLFWwindow * window, double x, double y){...}

假设在第一次使用后我存储了这个指针 GLFWwindow * window。有没有办法判断这个 glfw window 指针是否仍然有效(window 已初始化且未被销毁或终止)?

你需要自己跟踪。通常,任何 C++ 框架都不可能检查原始指针是否仍然有效。

如果指针指向的内存被释放,访问其内容现在是未定义的行为。任何值都可以在 RAM 的该部分中,因此您所做的任何检查最多会给您一个随机答案,最坏的情况下会给您一个段错误。

TL;DR 在 C++ 中使用指针时,您有责任跟踪对象的生命周期。

当GLFW中的一个window被销毁时,其内容会被释放,从而运行进入上述场景