所以我想知道如果我把'\ 0'放在“malloc”内存中间会发生什么。
我发现了这个问题。 Memory Leak when freeing a char array在Jesse Good的回答中,它说这行将打印出“malloc”内存的大小。
std::cout << *((std::size_t*)arr - 1) << std::endl;
这是否意味着如果我修改((std :: size_t )arr - 1)的值,当我调用“free”时将释放的内存大小将不同,如果修改后的值小于原始值,会导致内存泄漏吗?
答案 0 :(得分:6)
您所指的答案具有误导性。阅读接受的答案。
确实,如果您的系统使用某些内存分配器,则可以读取内存块之前的size_t
值以确定该块的大小。但是:
不要在分配区域之外读取或写入内存。