【发布时间】:2016-11-20 15:45:58
【问题描述】:
我正在尝试将一个缓冲区溢出到另一个缓冲区作为学习的实验。
char* tmp_test = malloc(8);
char* tmp_test2 = malloc(8);
strcpy(tmp_test2,"ABCDEFG\n");
strcpy(tmp_test,"abcdefghijklmnopqrstuvxyz\n" );
printf("1th string %s" , tmp_test);
printf("2th string %s" , tmp_test2);
free(tmp_test);
free(tmp_test2);
我希望 tmp_test 流向 tmp_test2,但这不会发生。
>1th string abcdefghijklmnopqrstuvxyz
>2th string ABCDEFG
>*** Error in `./Start': munmap_chunk(): invalid pointer: 0x00000000023bf860 ***
>Aborted
我在免费时遇到错误,但其他一切看起来都不错。
【问题讨论】:
-
您可能想查看指针本身,以了解它们之间有多少空间:
printf("%p --- %p", (void*)tmp_test, (void*)tmp_test2)