问题标签 [memory-address]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
229321 浏览

python - 访问对象内存地址

当您object.__repr__()在 Python 中调用该方法时,您会得到如下信息:

如果您重载,是否有任何方法可以获取内存地址__repr__(),然后调用super(Class, obj).__repr__()和正则表达式?

0 投票
3 回答
2949 浏览

c++ - 指针变量是否也分配了内存地址?

在 C++ 中,在堆栈上,一个简单的变量被分配了一个内存地址,这样我们就可以使用一个包含该内存的指针来指向它;那么指针是否也分配了内存地址?

如果是,我们可以有一个指针指针吗?

0 投票
4 回答
51849 浏览

javascript - 如何获取 JavaScript 变量的内存地址?

是否可以找到 JavaScript 变量的内存地址?JavaScript 代码是(嵌入)普通应用程序的一部分,其中 JavaScript 用作 C++ 的前端,并且不在浏览器上运行。使用的 JavaScript 实现是 SpiderMonkey。

0 投票
6 回答
4299 浏览

c++ - 在 C++ 黑客游戏代码中保留地址?

我有这段代码可以编辑游戏中的地址以获得无限弹药等等,我发现每台计算机的地址都不同,有时每次重新启动游戏时,我如何才能使这项工作仍然有效,即使他们改变了。

0 投票
5 回答
39111 浏览

memory - 如何使用页表将虚拟地址转换为物理地址?

假设我有一个普通的页表:

页表(页面大小 = 4k)

如何将任意逻辑地址(如 51996)转换为物理内存地址?


如果我取 log base 2 (4096),我得到 12。我认为这是我应该使用多少位来偏移地址。

我只是不确定。51996 / 4096 = 12.69。那么这是否意味着它以一定的偏移量位于第 12 页上?

那我怎么把它变成“51996”的物理地址呢?

0 投票
6 回答
239542 浏览

c - 在 C 中打印值的地址或指针

我想做一些看起来相当简单的事情。我得到了结果,但问题是,我无法知道结果是否正确。

我在 C 中工作,我有两个指针;我想打印指针的内容。我不想取消引用指针来获取指向的值,我只想要指针存储的地址。

我编写了以下代码,我需要知道它是否正确,如果不正确,我该如何纠正它。

虽然我发布这个(以及它正确的原因很重要)是我最终需要为指向指针的指针执行此操作。那是:

0 投票
5 回答
4774 浏览

windows - 为什么 Windows 为其系统地址空间保留 1Gb(或 2 Gb)?

众所周知,Windows 应用程序在 32 位系统上通常具有 2Gb 的私有地址空间。这个空间可以通过 /3Gb 开关扩展到 3Gb。

操作系统自己保留剩余的 4Gb。

我的问题是为什么?

在内核模式下运行的代码(即设备驱动程序代码)有自己的地址空间。为什么在一个独占的 4Gb 地址空间之上,操作系统还想为每个用户模式进程保留 2Gb 的空间?

我认为原因是用户模式和内核模式调用之间的转换。例如,调用NtWriteFile将需要内核调度例程的地址(因此系统在每个应用程序中保留 2Gb)。但是,使用SYSENTER,系统服务编号是否足以让内核模式代码知道正在调用哪个函数/服务?

如果您能向我解释为什么操作系统占用每个用户模式进程的 2Gb(或 1Gb)如此重要。

0 投票
3 回答
5625 浏览

winapi - 如何读取调用堆栈?

我们有一个通过 COM+ 在 Windows 2003 服务器上运行的本机 C++ 应用程序。我最近从事件查看器中注意到它抛出异常,特别是 C0000005 异常,根据http://blogs.msdn.com/calvin_hsia/archive/2004/06/30/170344.aspx表示该过程正在尝试写入不在其地址空间内的内存,也就是访问冲突。

事件查看器中的条目提供了一个调用堆栈:

LibFmwk!UTIL_GetDateFromLogByDayDirectory(char const *,class utilCDate &) + 0xa26c LibFmwk!UTIL_GetDateFromLogByDayDirectory(char const *,class utilCDate &) + 0x8af4 LibFmwk!UTIL_GetDateFromLogByDayDirectory(char const *,class utilCDate &) + 0x13a1 LibFmwk:::! )const + 0x1070 LibFmwk!utilCLogController::GetFLFInfoLevel(void)const + 0x186

现在,我知道它给了我要查看的方法名称,但我感觉每行末尾的地址(例如 + 0xa26c)试图将我指向该方法中的特定行或指令。

所以我的问题是:

  1. 有谁知道我如何使用这个地址或调用堆栈中的任何其他信息来确定代码中的哪一行?
  2. 有没有我可以阅读以更好地理解调用堆栈的资源,
  3. 是否有任何免费软件/开源工具可以帮助分析调用堆栈,可能通过附加到调试符号文件和/或二进制文件?

编辑:根据要求,这是似乎导致问题的方法:

}

这是我们公司的一位成员在 10 多年前编写的代码,他早已离开,所以我不认为确切知道这是在做什么,但我确实知道它涉及从“今天”重命名日志目录的过程' 到特定日期,例如 %20090329。数组索引、memcpy 和运算符的地址确实使它看起来相当可疑。

我们似乎遇到的另一个问题是,这只发生在生产系统上,我们永远无法在我们的测试系统或开发系统上重现它,这将允许我们附加调试器。

非常感激!安迪

0 投票
6 回答
2489 浏览

c - 如何在 C 中获取地址?

对此可能有一个非常简单的答案,但我就是看不到。

好的,所以 printf 给出了 0 (x) 和 2293752 (&x)。我试图找出一种方法来查看任何地址(&)并查看那里已经存储了什么。这只是为了实验。有什么帮助吗?

0 投票
1 回答
363 浏览

iphone - Iphone:NSInvocation 更改参数的引用?

我正在尝试设置 NSinvocation 将图片上传到网站。我正在这样做:

  1. 设置 nsinvocation 对象
  2. 将 UIImage* 作为参数添加到 nsinvocation 对象,以及其他一些参数
  3. 在需要时调用 nsinvocation
  4. 当我调用 nsinvocation 时调用的函数无法访问 UIImage - 我得到 NSInvalidArgumentException。

挖了一会儿之后,看起来如果我将 UIImage 作为参数添加到我的 NSInvocation 对象,然后尝试将其取回......我返回了一个不同的内存地址!这是正常的吗?

//首先我有一个有效的 UIImage "imgHolder",它的内存地址是 "A"...

NSInvocation *myInvocation = [NSInvocation 调用WithMethodSignature:...

[myInvocation setArgument:imgHolder atIndex:5];

//现在,奇怪的部分...

UIImage *checkImg;

[myInvocation getArgument:&checkImg atIndex:12];

// checkImg 的内存地址为“B”!

如果我尝试使用 checkImg,我会遇到各种异常,这让我相信它不是有效的 UIImage。

有什么想法吗?checkImg的内存地址不应该和imgHolder的一样吗?