【发布时间】:2018-11-06 02:58:15
【问题描述】:
我有以下代码。
char* p = malloc(10);
p = p + 1;
free(p);
在上面的代码中,
- malloc在调用malloc(10)时如何返回内存地址?
- free(p)将释放多少字节?
- free()如何知道要释放多少字节?
【问题讨论】:
-
这样做是未定义的行为。不允许将修改后的指针传递给 free。最好的希望是崩溃。
-
你必须得到一个错误
-
@purec,很遗憾不是,这是未定义的行为
-
我的编译器给了我错误
-
*** `./a.out' 中的错误:free():无效指针:0x086e9009 *** 中止