小编kFk*_*kFk的帖子

VisualStudio*.obj文件大小(513Mb objs和534Mb lib)

我是C++开发人员并使用Visual Studio 2008.如何减少*.obj文件大小?我已经读过为什么我的visual studio .obj文件与输出.exe文件相比大小很大?但没有找到答案.

当我将项目构建到静态库时,所有*.obj文件的总大小为513Mb,结果lib为534Mb.每个obj文件是1-13Mb.调试exe文件是11Mb.链接时代码生成(/ Gm)已关闭.

提前致谢.

c++ visual-studio-2008 visual-studio

6
推荐指数
1
解决办法
2169
查看次数

如何遍历luabind类(在lua或c ++中)?

如何遍历luabind类(在lua或c ++中)?

class 'A'

function A:__init()
    -- Does not work
    -- self is userdata, not a table
    for i, v in pairs(self) do
    end
end
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ scripting lua luabind

6
推荐指数
1
解决办法
2701
查看次数

在Lua丢失了引用

对象有问题,不再需要但仍有引用.结果:由于未收集对象,分配的内存大小不断增加.

如何解决这类问题?有没有办法找到只有一个引用的对象,或者生命周期超过某个值的对象?或任何其他解决方案?

使用Lua 5.1和C++与luabind.

谢谢.

lua garbage-collection memory-leaks luabind

3
推荐指数
1
解决办法
2610
查看次数

在luabind :: object中存储与父级的lua类

使用C++,lua 5.1,luabind 0.7-0.81

尝试使用parent创建lua类并将其存储在luabind :: object中.

LUA

class 'TestClassParent'
function TestClassParent:__init()
    print('parent init\n')
end
function TestClassParent:__finalize()
    print('parent finalize\n')
end

class 'TestClass' (TestClassParent)
function TestClass:__init()
    print('init\n')
    TestClassParent.__init(self)
end
function TestClass:__finalize()
    print('finalize\n')
end
Run Code Online (Sandbox Code Playgroud)

C++

{
    luabind::object obj = luabind::call_function<luabind::object>(lua_state, "TestClass");
}
printf("before GC\n");
lua_gc(lua, LUA_GCCOLLECT, 0);
printf("after GC\n");
Run Code Online (Sandbox Code Playgroud)

输出: GC 后GC 之前的
init
父init

结果: obj被销毁后,'TestClass'实例在垃圾收集周期后仍然存活(未调用__finalize方法且未释放内存).它只在程序退出时销毁.
Moresome如果我使用类无父,垃圾收集正确.

如果我尝试使用采用策略(获取创建对象的所有权)

luabind::object obj = luabind::call_function<luabind::object>(lua_state, "TestClass")[luabind::adopt(luabind::result)];
Run Code Online (Sandbox Code Playgroud)

我明白了:

  • luabind 0.7 - 与没有采取政策相同的结果
  • luabind 0.81 - …

c++ scripting lua garbage-collection luabind

3
推荐指数
1
解决办法
1990
查看次数