在 CI 中可能会说
printf("%p",0x11194);
*((int *) 0x11194) = 30240;
(在这个例子中,我知道那个内存位置有一个整数)
请告诉我,我将如何在 Java 中做同样的事情?顺便说一句,我可能完全误解了记忆的工作原理
您可以使用sun.misc.Unsafe和ByteBuffer在 Java 中执行此操作。
但是,对于正常的 Java 使用,您根本不这样做。Java 会给你一个对象引用,它是一个对象的句柄。它不指向内存中的一个位置(JVM 可以在您不知道/不关心的情况下移动内存中的对象)并且您不能对它们执行算术运算(与指针不同)
你没有误解记忆是如何工作的。您只是假设 Java 会让您触摸它。它不会。内存和指针仍然存在,但必须通过正确的对象创建和取消引用来访问,而不是直接指针内存访问。
从好的方面来说,您不必担心释放不再需要的内存。