草庐IT

空指针

全部标签

c++ - 使用指针创建对象访问冲突错误

所以我刚开始使用C++进行Windows编程。首先我画了一些线,没问题,然后我尝试创建一个类来绘制一些形状,当我使用普通方法创建对象时它工作正常(在代码中这些部分被注释掉),但是当我使用指针创建新对象时,出现了Accessviolation错误。这是我的类(class)(我删除了一些代码,因此在某些部分看起来过于简单):classshapes{public:shapes(void);voidsetstartp(POINT&p0);voidsetendp(POINT&p1);voiddraw(HDChdc);~shapes(void);POINTx0;POINTx1;};shapes::

c++ - 使用 GetModuleHandle 获取指向 IMAGE_DOS_HEADER 的指针?

一旦我的进程加载到内存中,我就试图获取它的图像库。据我了解,您可以调用GetModuleHandle来获取图像库。我的问题是,返回的句柄是否实质上指向IMAGE_DOS_HEADER结构,以便您可以执行以下操作:PIMAGE_DOS_HEADERDosHeader;DosHeader=(PIMAGE_DOS_HEADER)GetModuleHandle(NULL);如果这不正确,您还可以使用什么其他方法? 最佳答案 这是正确的,但如果您想要dll的模块句柄,则需要指定其路径。否则,您将获得进程exe的句柄。您还应该首先检查返回的HM

c - 赋值从整数生成指针而不进行强制转换

当我尝试编译以下代码时:#defineBUFSIZEMAX_PATH//....TCHARsz_VolumeName[BUFSIZE];//11HANDLEhSearch;//12hSearch=FindFirstVolume(sz_VolumeName,BUFSIZE);//13它给了我错误:[Warning]assignmentmakespointerfromintegerwithoutacast-第13行的问题这里出了什么问题?编辑:例如:#include#include#include#include#defineBUFSIZEMAX_PATHintmain(intargc,c

windows - Windbg 将指针视为有符号整数

structNode{structNodeYNY;intdata;};当我这样做时,对于该结构的实例指针“N”2:kd>?poi(poi(N))Evaluateexpression:-70368698399456=ffffc000`02ba8520基本上我想用这样的东西bpigdkmd64!KmRender+0x199".if(@@(N)>0x1){}.else{gc}"因此,大多数情况下它是正确的,但由于windbg将其视为有符号整数,上述条件断点始终为假,因为@@(N)始终计算为负数。如何比较2个内存地址的数量? 最佳答案 kd

windows - 是否值得在 QueryInterface() 实现中检查空指针?

IUnknown::QueryInterface()被传递了一个void**参数,表示放置检索到的接口(interface)的地址。STDMETHODQueryInterface(/*[in]*/REFIIDriid,/*[iid_is][out]*/void**ppvObject)QueryInterface()的实现应该检查这个指针是否为空(然后立即返回E_POINTER)还是只写在那里?我看过很多与COM相关的代码,几乎所有地方都没有执行任何检查。假设有人当然可以传递空指针作为这个参数,但真的需要这样的检查吗? 最佳答案 您(

c++ - 如何查看指针映射中的指针是否不为 0

我制作了一张map,我需要在另一个线程中使用该map,所以我制作了一个指向我的map的指针并将其发送到另一个线程。但是,当我想查看映射中的值是否不为NULL(指针)时,我得到了一个错误。这是一个示例代码:#include#include#includeusingnamespacestd;intmain(){inttest=1;maphandle;map*handle2;handle[0]=&test;handle2=&handle;if(*handle2[0]){cout这是我得到的错误:错误C2451:'std::map'类型的条件表达式是非法的在这种情况下,我如何欺骗0指针?

c++ - 鼠标指针渲染器

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visitthehelpcenter.关闭9年前。我正在考虑使用C++创建一个针对Windows7(使用Windowsapi)的软件,它允许在同一台PC上使用第二个鼠标指针,所以我的问题是Windows的女巫部分正在处理鼠标指针的渲染?我相信了解它的实际工作原理将使我能够模仿它以呈现第二个鼠标指针。谢谢。

C语言--指针与数组

目录指针运算(补)指针+指针指针的关系运算(补)指针与数组数组名二级指针指针数组指针运算(补)指针+指针上一篇博客我们介绍了指针运算中的三种常见运算:指针±整数,指针关系运算,指针-指针。,但类比常数的关系运算,我们好像还少了一个指针+指针的运算,那么在C语言中的指针+指针到底有没有意义呢,实际上这种运算是没有什么意义的。举个例子,如图1:日期加天数能等到另一个日期,类比指针加整数得到一个新指针。日期减日期能得到天数,类比数组指针两两相减得到其中的元素个数。而日期加日期貌似就没有什么意义了,类比指针加指针也是如此。指针的关系运算(补)我们来分析下面这两段代码代码1#defineN_VALUES

c - 使用 WinAPI 按名称获取进程中的指针变量

我不确定问题的标题有多清楚。这是我正在尝试做的事情:我有一个进程,它使用DLL库作为插件。这些库使用函数,与临界区对象同步。我希望所有DLL函数都与相同的临界区对象同步。我想到了以下几点:第一个DLL将初始化一个临界区对象,其他DLL也将使用它,而不是初始化一个新的。但是我怎样才能得到指向第一个DLL的临界区对象的指针呢?我想到的一个解决方案是使用NamedSharedMemory,并将指向临界区对象的指针放在那里。它会起作用,但感觉就像用火箭筒射苍蝇一样。是否有更简单、更惯用的方法来创建具有可检索指针的命名对象? 最佳答案 一个D

c++ - 我可以使用内存映射文件传递指针吗?

我已阅读有关Memory-MappedFiles的文章和关于CreateFileMapping的例子.我的问题是:我可以使用内存映射文件在两个进程之间传递指向结构或对象的指针吗?由于有一些可能的答案,这里是我想传递的结构://FirstProcessstructOtherStruct{};structMyStruct{unsignedlonghandleObject;unsignedlong*phandleObject;OtherStructsomeData;OtherStruct*pData;}MyStructdataSend={...};WriteToMappedFile(data