-1

我有一个功能

char *func1(char *buffer);

这是函数有一个缓冲区。

char buffer[10]={'\0'};

缓冲区被传递给函数并从函数中获取结果并从函数返回。

所以,当 Main 函数调用 func1

char *result=func1(buffer);

所以当我打印结果时,它给出了一个有效的结果..

 printf("The final result is %s", result);

但是,在这行代码之后

   s = socket(AF_INET,SOCK_DGRAM,0);

我再次打印结果

   printf("The final result is %s", result);

这一次它给出了不同的结果。

我想知道为什么char * result变了?

4

1 回答 1

6

可能是因为你buffer超出了范围。您不能“保留”局部变量的地址,一旦它们超出范围,地址就会变得无效。

正如一堆恼人的评论所表明的那样,如果没有看到你的代码,这是不可能真正回答的。希望你应该理解这一点,否则你会在这里期待魔法。

要分配无论范围如何都持续存在的内存,请使用malloc().

于 2013-09-30T08:46:16.373 回答