malloc
我通过and分配了一些大块的内存aligned_alloc
,然后我在内存中的一个区域设置了一个栅栏,其大小为一页大小,使用mprotect
:
void *buf = malloc(128 * PAGE_SIZE);
int ret = mprotect(buf, PAGE_SIZE, PROT_NONE);
现在我已经完成了内存并正在调用free(buf);
以释放它,我的问题是我需要mprotect
在调用之前重置free
,如下所示:
ret = mprotect(buf, PAGE_SIZE, PROT_READ|PROT_WRITE);
free(buf);
还是我应该这样做free
?我读到glibc有时会重用一些以前分配的内存,所以如果这个内存区域稍后返回malloc
,访问它会导致问题(因为它是PROT_NONE
)?