在C++和Windows中如何处理我的指针
How is my pointer going to be handled be handled in C++ and Windows?
下面的指针是否总是为NULL,除非我自己不设置它指向某个地方?
int* mGlobal = NULL;
或者,它可以由任何其他进程设置,也可以由Windows本身出于某种原因设置,即使我已将其设置为NULL。还是只要我抓住这个指针,它就会一直在我的进程保护内存中?
如果我制作一个指针数组,在堆上分配一些内存,然后删除它而不将其设置为NULL,那么它所指向的地址将对任何其他进程或Windows免费使用?在这种情况下,删除后不设置或设置为NULL有区别吗?
只要我的进程抓住指针,指针本身就会一直存在,但在什么情况下,当我仍然抓住指针时,指针指向的内存会被其他进程或Windows更改?
我知道很多问题。
除非我自己不设置它指向某个地方,否则下面的指针总是为NULL吗?
是。指针本身使用的内存不会改变。目前它没有指向任何东西,因为它是NULL。如果您使用的是c++11,请使用nullptr。
如果我在堆上创建一个指针数组,分配一些内存,然后在之后删除它而不将其设置为NULL
如果使用new分配内存,并在以后将其删除,则将其设置为NULL或以其他方式不会影响删除前所指向的内存。所以,如果我理解你的问题,在这种情况下没有区别。但最好将其设置为NULL(nullptr)。最好还是使用智能指针。
只要我的进程保持,指针本身就会一直存在
如果将指针变量作为引用或指针传递并通过该引用或指针进行更改,指针变量本身可能会发生更改,但通常情况下不会发生更改。在正常情况下,它所指向的内存可以通过指向同一内存的另一个指针进行更改。它通常不会被其他进程更改。如果你选择这样做,它可以传递给其他线程。我没有考虑过深奥的情况。
只要我的流程保持
通常情况下,您不会考虑进程,甚至线程,而是考虑范围。如果上面的变量是在类之外声明的(顾名思义),那么它就具有程序作用域。这样的全局变量被认为是不好的做法。
- 为什么我的 IExtractIcon 处理程序没有被调用?
- 为什么我的信号处理程序只执行一次?
- C++:处理错误,看不懂我的错误
- 为什么我的代码无法处理大型数组输入(>10000)?
- 如何在bazel中同时处理外部依赖项和我的项目
- 我的控制台处理程序不处理 CTRL+C,即使设置正确
- 我的代码在捕获块中处理了正确的 eof 后到达 eof 时会引发 basic_ios::clear ?
- 为什么我的中断被调用,但不会进入处理程序?
- 为什么事件队列未处理我的QT信号
- 如何使用Visual Studio C/C++编译器(cl.exe)来预处理我的objective-C代码
- 我想将 OpenCV 中处理后的图像保存为“input_name+enhanced.input_image_format
- 如何在我的C++程序中调试字符串处理
- 我似乎无法让 SDL 处理崇高的文本
- 为什么我的模板专业检查不足以正确处理相应的类型
- 优先处理我的WindowsHook
- 在C++和Windows中如何处理我的指针
- 我应该/可以/必须如何处理我的C++项目所依赖的dll
- 我很难理解如何处理我的OMP程序中的heisenbug段故障
- 我得到矛盾的答案,我应该如何处理我的代码?
- Cocos2d-x clayer不能在多层处理我的触摸