如果我按以下方式更改指针,free()
会正常工作吗?
ar_byte_100=calloc(100,1);
ar_byte_100=&((unsigned long int*)ar_byte_100)[50];
free(ar_byte_100);
答案 0 :(得分:2)
否强>
您必须将malloc()
或calloc()
返回的确切指针传递给free()
。
答案 1 :(得分:2)
根据标准free(ptr)
ptr
应该是由malloc()
calloc()
和realloc()
返回的指针,除此之外的任何内容都是未定义的行为。