Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI/共享库中的自定义malloc_Java_C_Linker_Java Native Interface - Fatal编程技术网

Java JNI/共享库中的自定义malloc

Java JNI/共享库中的自定义malloc,java,c,linker,java-native-interface,Java,C,Linker,Java Native Interface,我希望在共享库中使用我自己的malloc实现,它将被加载到JVM中。它包含一些Java本机代码函数。我有以下问题: 1我想在我的C代码中替换malloc/free/calloc等,但是JVM仍然应该与真正的malloc一起工作。但是,我发现有几篇参考文献指出,每个函数符号都被解析为整个应用程序的一个地址,那么,这是否可以工作呢 2如果共享库链接到另一个库,那么第二个库是否也会使用my malloc 如果所有这些都只在Linux上运行就可以了,不需要可移植性 PS:我考虑在编译库时使用define

我希望在共享库中使用我自己的malloc实现,它将被加载到JVM中。它包含一些Java本机代码函数。我有以下问题:

1我想在我的C代码中替换malloc/free/calloc等,但是JVM仍然应该与真正的malloc一起工作。但是,我发现有几篇参考文献指出,每个函数符号都被解析为整个应用程序的一个地址,那么,这是否可以工作呢

2如果共享库链接到另一个库,那么第二个库是否也会使用my malloc

如果所有这些都只在Linux上运行就可以了,不需要可移植性


PS:我考虑在编译库时使用define malloc my_malloc,但是,这不会影响库加载的库

您的JNI分配器和JVM分配器不应假定为相同的。如果它们使用相同的共享C运行时,那么它们是可能的,但这并不重要,因为在任何时候都不会释放JVM分配的东西,也不会malloc JVM释放的东西。一个正确编写的JNI使用内存管理,通过JVM环境API将JNI与JVM交叉。您会寻找类似的东西吗?我们可以选择哪个库与什么链接。JVM还是没有JVM