Slide 22
Slide 22 text
ISSP, Univ. of Tokyo
22/36
mallocしてfreeしてチャンクリストを表示
自明にまとめられたチャンクは非表示
#include
#include
#include
const int N = 128;
int
main(int argc, char **argv) {
char *buf[N];
size_t size = 128;
#pragma omp parallel for
for (int i = 0; i < N; i++) {
buf[i] = (char*)malloc(size);
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < size; j++) {
buf[i][j] = 0;
}
}
for (int i = 0; i < N; i++) {
free(buf[i]);
}
printf("digraph test_%d¥n {¥n", size);
for (int i = 0; i < N; i++) {
size_t *p = (size_t*)(buf[i]);
size_t prev_size = *(p - 2);
if (prev_size != 0)continue;
size_t *ct = p - 2;
size_t fd = *p;
printf("¥"%lx¥"->¥"%lx¥"¥n", ct, fd);
}
printf(")¥n");
}
https://gist.github.com/kaityo256/32bc425b630642f67e649854104f977e
128バイトを128個malloc&free
malloc のチャンクリスト形状 (1/5)
チャンクリスト可視化コードを書いた
注: デフラグされなかったチャンクを表示しているわけではない
隣接するチャンクがまとめられた時、代表チャンクのみ表示