【发布时间】:2017-11-28 14:04:28
【问题描述】:
我试图弄清楚与内存模型相关的这三种问题之间的区别。
如果我想模拟memory leak的场景,我可以创建一个指针而不调用对应的delete方法。
int main() {
// OK
int * p = new int;
delete p;
// Memory leak
int * q = new int;
// no delete
}
如果我想模拟double free的场景,我可以释放一个指针两次,这部分内存稍后会分配两次。
a = malloc(10); // 0xa04010
b = malloc(10); // 0xa04030
c = malloc(10); // 0xa04050
free(a);
free(b); // To bypass "double free or corruption (fasttop)" check
free(a); // Double Free !!
d = malloc(10); // 0xa04010
e = malloc(10); // 0xa04030
f = malloc(10); // 0xa04010 - Same as 'd' !
但是,我不知道accessing freed memory 是什么。谁能给我一个accessing freed memory的例子吗?
【问题讨论】:
标签: c++ memory memory-management memory-leaks