我有一个相当大的 lua 5.4 脚本在 C++ lua 嵌入器中运行(没有问题)。我还使用了自己的 l_alloc 实现。每当它被调用时,我都会打印 lua 请求的内容:
static void *l_alloc(void *ud, void *ptr, size_t osize, size_t nsize) {
fprintf(stdout, "[LUA_ALLOC] ptr %p, osize %d, nsize %d\n", ptr, osize, nsize);
有时结果是:
[LUA_ALLOC] ptr 0x0, osize 0, nsize 0
引用lua 5.4文档:
当 nsize 为零时,分配器必须表现得像 free 并返回 空。
所以 Lua 要我打电话给 free(NULL) 只是为了好玩?我不明白为什么会这样。
我试图理解的问题:
知道为什么会这样吗?