int main(int argc, char **argv) { char **p; char *p1; char *p2; char *p3; *p = (char *)malloc(24); p1 = (char *)p; p2 = (char *)(p + 8); p3 = (char *)(p + 16); free(p1); free(p2); free(p3); return 0; } |
原帖由 asdf511 于 2007-6-28 17:13 发表于 2楼
*p = (char *)malloc(24);//这样是不是会有问题呢?
原帖由 yupp 于 2007-7-6 10:10 发表于 4楼
早就越界了。
p指向的是保存有 malloc(24)空间的地址的地址。*p才是正确的空间指针。
free了p就铁定找不到你分配的空间了,顺带你的free还有可能溢出。
起码你也要free(*p1)
p2,p3完全没必要free
原帖由 avacool 于 2007-7-6 10:19 发表于 5楼
这句没懂 :顺带你的free还有可能溢出
free怎么能溢出??
欢迎光临 Chinaunix (http://bbs.chinaunix.net/) | Powered by Discuz! X3.2 |