小编deg*_*gen的帖子

如何在 javascript (emscripten) 中覆盖 c++ malloc/free?

我通过包装原始函数并仅添加 Console.log 来显示内存地址、大小和分配的总内存,从而覆盖 Javascript(emscripten) 中的 Module._malloc 和 Module._free。

我发现新函数仅捕获对 Module._malloc 和 Module._free 的 Javascript 调用,并且不能捕获对 malloc() 和 free() 的 C++ 级别调用。我想知道为什么。

根据Ofria先生的回答/sf/answers/2384014391/,Module._malloc和Module._free是c++的malloc()和free()转换后的等效代码。

我正在使用 emscripten 1.35.0

编辑:继承人如何将函数包装在 javascript 中

var _defaultMalloc = Module._malloc;
var _defaultFree = Module._free;

var _totalMemoryUsed = 0;
var _mallocTracker = {};
Module._malloc = function(size) {
   _totalMemoryUsed += size;
   var ptr = _defaultMalloc(size)
   _mallocTracker[ptr] = size;

   console.log("MALLOC'd @" + ptr + " " + size + " bytes -- TOTAL USED " + _totalMemoryUsed + " …
Run Code Online (Sandbox Code Playgroud)

c++ emscripten

2
推荐指数
1
解决办法
1959
查看次数

标签 统计

c++ ×1

emscripten ×1