c - Openssl 的堆内存使用情况

标签 c openssl heap-memory valgrind

我有一个使用 C 中的 Openssl 库实现的简单 HTTPS 服务器。对于单个连接,堆使用量似乎很大。以下是一些可能占用大量堆空间的对象:

  • char readbuffer[8192]
  • SSL_CTX
  • SSL

这正常吗?有没有工具可以查出哪个对象占用了多少堆?

HEAP SUMMARY:
==7644==     in use at exit: 78,502 bytes in 2,366 blocks
==7644==   total heap usage: 3,548 allocs, 1,182 frees, 3,139,689 bytes allocated
==7644==
==7644== LEAK SUMMARY:
==7644==    definitely lost: 0 bytes in 0 blocks
==7644==    indirectly lost: 0 bytes in 0 blocks
==7644==      possibly lost: 0 bytes in 0 blocks
==7644==    still reachable: 78,502 bytes in 2,366 blocks
==7644==         suppressed: 0 bytes in 0 blocks

最佳答案

尝试找出进行了哪些 malloc 调用以及何时进行。 Dmalloc 可以提供帮助:http://dmalloc.com/

有一次我还使用了一个简单的包装脚本来手动跟踪内存分配。我认为是这个: http://www.cs.cmu.edu/afs/cs.cmu.edu/academic/class/15213-s03/src/interposition/mymalloc.c

关于c - Openssl 的堆内存使用情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7652343/

相关文章:

c++ - 为什么不在 C++ 中对所有内容都使用指针?

c - strtok() 函数自动忽略不是我的分隔符的数据

ssl - 此证书具有无效的颁发者钥匙串(keychain)

java - 重启后永久增加java堆大小?

curl - 使用 openssl 和 curl 验证服务器证书

windows - OpenSSL 在 PKCS12 导出期间挂起, "Loading ' 屏幕'进入随机状态“

java - 使用hadoop jar时如何增加堆大小?

c - 为什么线程从数组中随机加载数据?

c - fork父子通信

使用现有 C 文件在 Eclipse 项目中创建