草庐IT

Pointers

全部标签

c++ - Windows:在 C++ 中获取函数地址

我正在尝试获取函数地址以使用memcpy将其内容复制到缓冲区中。我遇到的问题是获取函数地址。这是我的代码:__declspec(noinline)intgio(){constcharyle[]="AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";return7;}intmain(intargc,TCHAR*argv[]){int(*funcptr)()=gio;unsignedchar*p=(unsignedchar*)&funcptr;size_tik;for(ik=0;ik%x\n",gio);printf("giop->%p\n",gio);}我创建了一个小测试程

c++ - 为什么不能访问自 Windows 95 以来另一个进程的地址空间?

假设我将一个指针作为参数发送给另一个程序:program.exe-mypointer并尝试在那个程序中使用它,它不会工作。经过一些研究(即在LoungeC++询问)后,我发现自Windows95以来,您无法访问另一个程序的地址空间。在旧版本的Windows中,它是允许的。我的问题是,为什么微软不允许它?这样做有什么问题或缺点?P.S在新版本的Windows中是否仍然可以通过一些解决方法来做到这一点? 最佳答案 因为能够访问其他进程的地址空间意味着您可以通过随机更改它们的内存内容等方式使它们崩溃。保护模式的全部要点是保护进程彼此。查看

c - 如何获取基栈指针的地址

我正在将应用程序从x86移植到x64。我正在使用VisualStudio2009;大多数代码是C++,一些部分是纯C。向x64编译时不支持__asm关键字,我们的应用程序包含一些内联汇编程序。我没有写这段代码,所以我不知道et应该做什么:intCallStackSize(){DWORDFrame;PDWORDpFrame;__asm{movEAX,EBPmovFrame,EAX}pFrame=(PDWORD)Frame;/*...dostuffwithpFramehere*/}EBP是指向当前函数栈的基指针。有什么方法可以不使用内联asm来获取堆栈指针吗?我一直在研究Microsoft

c++ - 访问单例 C++ 的段错误

概览我正在编写一个辅助类,以便使用xRedis更轻松地调用RedisC++中的驱动程序,但在向实例请求或发送任何信息时,我不断收到段错误。我认为这与我存储xRedis和RedisDBIdx实例的方式有关,也可能与我在主应用程序中存储RedisAdmin实例的方式有关,但我看不到正确的设置方式这些经过多次尝试。下面是相关代码,以及我自己采取的调试步骤的一些注意事项。调试说明RedisServer启动成功,日志输出显示实例启动成功连接到服务器无论是set命令还是exists命令发送到服务器,调用都会失败GDB输出如下所示,日志显示在exists或set调用上发生的相同情况:Programr

mongodb - MongoDB 中的 "Pointers"?

在我目前正在从事的项目中,如果我创建一个包含指向存储在其他集合中的信息的“指针”列表的嵌套文档,似乎更能提高效率。这样,这个嵌套文档可以很容易地用于检索相关信息的列表。问题是,如何做到这一点?有没有办法在MongoDB的字段中存储其他信息的位置?如果没有,谁能提出一个同样有效或更有效的方案?非常感谢! 最佳答案 没有好的方法可以做到这一点。如果这是您正在寻找的,您应该使用关系数据库。但是,如果您必须走这条路,那么为什么不将ID存储在文档中,然后将这些ID链接到其他集合中的文档。不幸的是,这需要您执行2个单独的查询,因为Mongo不支

mongodb - 为什么大多数 NoSQL DBMS 没有 “pointers” ?

为什么大多数NoSQL存储解决方案不像前关系DBMS那样具有某种超高效连接“指针”的客观原因是什么?我的意思是,我部分理解为什么经典RDBMS放弃指针的理论原因(需要更新它们并为内存和磁盘双重同步它们,在某些用例中没有足够快的“磁盘”可以像随机访问一样处理,就像现代SSD可以的那样)。但在许多NoSQL解决方案中,为什么只有这么少的人意识到这个模型对于许多实际案例来说是很棒的(我知道的异常(exception)是OrientDB和Neo4j),而不仅仅是那些需要图形遍历的案例。我的意思是,当您需要诸如多连接之类的东西时,您需要pingpongMongo并执行N个查询而不是一个查询。No

ios - objective-c - 获取指向对象属性的指针

我有一个对象Activity,它具有三个NSString属性activityName,activityType,activityDescription我想做这样的事情NSString*currentProperty=activity.activityDescription;currentProperty=@"Mydescription";并使activity.activityDescription在我更改currentProperty时自动更新我认为这应该是可能的,因为我使用的是指针,但实际上它不起作用。我做错了什么? 最佳答案 这

ios - 从 'CGFloat *' 分配给 'float *'(又名 'int')的指针转换不兼容整数

我在使用CGFloat时遇到问题。我想要做的是为UIScrollView的X设置一个值,以便在用户使用UIButton更改页面时执行某些操作。这是Xcode给我的错误:Incompatibleintegertopointerconversionassigningto'CGFloat*'(aka'float*')from'int'这是我的代码:.h#import@interfaceMenuViewController:UIViewController{}@property(nonatomic)CGFloat*offsetPoint;@property(weak,nonatomic)IBO

c++ - 如何检查指针指向 iOS 上的堆或堆栈内存?

这类似于anotherquestion,无论如何我正在寻找一种特定于平台的方法来执行此操作(如果它存在于iOS上)。为Apple平台开发意味着基于非Apple的工具集通常不太适用。所以我希望找到平台本地方式来做到这一点。因为简单的谷歌搜索给了我this(heapcommand),我确定也有一个API函数。我正在寻找这个仅用于调试构建断言以检测删除堆栈分配对象的情况。所以知道地址指向哪里就足够了——栈还是堆。因此性能、版本兼容性、内部API或任何质量问题都无关紧要。(也许在模拟器上测试也是一种选择)但我认为如果堆栈与堆完全分离,这并不是那么繁重的操作。我标记了C++,但如果适用于C++,

iphone - Objective-C 指针 > 指向属性

我有一个名为“estimatedTime”的自定义类的NSInteger属性,现在,在我的UITableView类中,我试图将此属性作为指向UITableViewCell的指针传递。我似乎无法让它工作!我尝试了以下方法:NSInteger*pointer=sharedManager.tempTask.&estimatedTime;NSInteger*pointer=&sharedManager.tempTask.estimatedTime;我收到错误:左值需要作为一元“&”操作数和:“&”标记之前的预期标识符你不能传递一个指向属性的指针吗?该属性不只是它自己指向我的自定义类中的ivar