试图理解我的问题的答案
当试图释放堆管理器分配的内存时会发生什么,它分配的比要求的多?
我写了这个函数并且对它的输出感到困惑
int main(int argc,char **argv){
char *p,*q;
p=malloc(1);
strcpy(p,"01234556789abcdefghijklmnopqrstuvwxyz"); //since malloc allocates atleast 1 byte
q=malloc(2);
// free(q);
printf("q=%s\n",q);
printf("p=%s\n",p);
return 0;
}
输出
q=vwxyz
p=01234556789abcdefghijklm!
任何人都可以解释这种行为吗?或者这个实现是特定的?
如果 free(q) 未注释,我也会收到 SIGABRT。