首页 文章

我应该在堆栈或堆上放置大型数组吗?

提问于
浏览
2

我正在用C开发一个多线程应用程序 . 我目前正在使用40个线程,每个使用大约2Mb的数组 .

我目前正在动态分配这个数组,所以我这样做:

char *data = malloc(2097152 * sizeof(char));

这些线程正在处理请求,因此每次有新请求进入时,都会不断分配和释放此数组 .

一切正常,但我正在使用valgrind的massif工具,它告诉我,我有时有80Mb的堆 . 所以我有点疑惑,我会有堆碎片问题吗?我还在代码的其他位置分配了较小的内存块 .

另外,我可以从静态数组中受益吗?我正在寻找提高我的表现的方法,我想知道这是否会有所帮助 . 但是,我害怕这样做并最终导致堆栈溢出 . 堆栈中80Mb似乎太大了......

任何建议?我真的不知道堆/堆的大小是多大 .

1 回答

相关问题