Chuyu-Team / VC-LTL5

Shared to msvcrt.dll or ucrtbase.dll and optimize the C/C++ application file size.
Eclipse Public License 2.0
499 stars 48 forks source link

XP兼容模式私有内存占用异常 #67

Closed cxxzhang closed 3 months ago

cxxzhang commented 3 months ago

代码如下

include

include

int main() { std::cout << "Hello World!\n"; while (true) { Sleep(1000); } }

当使用了VC-LTL5和不使用VCL-LTL5时, 内存占用相差170倍. C8EDB9E6CA94DC07613F0C41B7884EB8

mingkuang-Chuyu commented 3 months ago

原因

感谢支持,我们已经定位到原因。这些内存占用来自于VC-LTL内部的全局变量。历史以来,因为Windows XP不完整支持tls 所以某些地方使用了超大全局变量模拟Tls的行为。 正因为这些全局变量导致了这些内存占用。

影响范围

使用XP作为编译目标编译时受到影响,可能所有VC-LTL5均受到影响。但是并非所有情况都受到影响,理论上只有依赖上___lc_locale_name_func才受到影响。

修复方案

切换到tls实现,因为现在YY-thunks已经可以为XP提供完成的Tls支持。等耐心等待。

mingkuang-Chuyu commented 3 months ago

https://github.com/Chuyu-Team/VC-LTL5/releases/tag/v5.1.1-Beta4

已经发布