スレッドのスタック使用状況を監視しようとしています。そのためには、スレッドスタックのアドレスを知る必要があります。それを行う唯一の方法は、を使用してスタックを設定することpthread_attr_setstack()
です。
私は現在mmapを使用してメモリを割り当てています:
pthread_attr_t ptAttr;
pthread_t pth;
pthread_attr_init(&ptAttr);
void *stack = mmap(NULL, stksize, PROT_WRITE|PROT_READ, MAP_ANONYMOUS|MAP_SHARED, -1, 0);
pthread_attr_setstack(&ptAttr, stack, stksize);
pthread_create(&pth,&ptAttr,threadFunc,&info);
最初の質問ですが、これはメモリを割り当てる良い方法mmap
ですか?フラグは正しいですか?malloc
代わりに使用する必要がありますか?これは、仮想/スワップメモリのない低リソースデバイスで実行されます。
2番目の質問、このメモリはスレッドが停止したときに自動的に解放されますか?よくわからない場合は、リリースされているかどうかを確認する方法はありますか?