我在测试程序中观察到以下行为:
我正在malloc()为1 MB,然后free()之后sleep(10)。我做了五次。我正在观察top程序运行时的内存消耗。
一次free()-d,我期望程序的虚拟内存(VIRT)消耗将减少1 MB。但实际上并非如此。它保持稳定。这种现象的解释是什么?malloc()分配内存时是否做一些保留?
我正在尝试构建 libcurl 并静态链接到 openssl。为了实现这一点,我使用了以下配置:
\n\nOpenSSL:
\n\nLDFLAGS="-static\xe2\x80\x9d\nLIBS="-ldl\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n卷曲:
\n\nLDFLAGS="-static\xe2\x80\x9d\nCPPFLAGS="-I$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)/include \nLDFLAGS="-L$(CURDIR)/$(3RDPARTY_DIR)$(OPENSSL)"\n./configure --disable-shared --without-zlib --without-libidn --without-librtmp --disable-ldap \xe2\x80\x94-with-ssl=<path where my openssl is installed>\nRun Code Online (Sandbox Code Playgroud)\n\n有了这个,我将生成 libcurl.a 并将其链接到我的代码,在其中我能够根据我的需要成功处理 HTTPS 连接。
\n\n但出于学习目的,我想知道 SSL 符号是否实际集成到 libcurl 中。\n因此,我尝试使用nm命令:
nm -A libcurl.a | grep \xe2\x80\x9cSSL_"\nRun Code Online (Sandbox Code Playgroud)\n\n但它显示所有 SSL 符号为未定义。例如,
\n\nU SSL_connect\nU SSL_ctrl\nRun Code Online (Sandbox Code Playgroud)\n\n那么这是否意味着 libssl.a 和 libcrypto.a 中的符号实际上并未集成到 libcurl 中?
\n\n如果是,可以采取什么措施将它们实际集成到 libcurl.a 中?
\n\n感谢任何帮助我理解这一点的帮助。
\n我已经尝试寻找解决方案的多种方法,但到目前为止找不到合适的方法。
我正在使用分离线程,因为我不希望我的主线程等待/阻塞新的子线程,因为它还有许多其他重要的事情要做。
我创建一个线程如下:
std::thread rsync_t(&PreCompile::RunPreCompileThr, obj, arg1, arg2);
rsync_t.detach();
Run Code Online (Sandbox Code Playgroud)
现在,目标是定期检查这个分离的线程是否处于活动状态并正在运行。
我尝试了未来/承诺和异步方式来做到这一点,但它需要 .get(),它类似于 join(),这是我不想要的。
有什么建议可以做到这一点吗?
提前致谢。