我将指针参数传递给函数,调用和被调用函数中的指针值不同。为了给出一个想法,我正在编写一段看起来类似于我的工作代码的代码 -
void free_wrapper (char* a) {
printf ("a - %p \n", a);
free (a);
}
main () {
char a [200];
char * c = malloc (sizeof (char)*100); //some 100 bytes;
memset (a, 50, 200);
a [199] = '\0';
/* here I write some data into the alloc'ed memory */
/* instead of writing 100 bytes I go and write beyond the boundaries */;
strcpy (c, a); //explicit use of strcpy
printf ("c - %p \n", c);
free_wrapper (c);
return 0;
}
当我破坏分配的内存时,我看到 free_wrapper 之前的 printf 和 free_wrapper 中的 printf 正在为指针打印不同的值。
我在这里展示的代码可能不会出现这个问题,但我经常用我的工作代码来解决这个问题。有人可以告诉我不同的场景,其中作为参数传递的值在堆栈上被破坏了吗?
抱歉打错了,问题已更正。