C String改变了

时间:2013-09-30 08:43:39

标签: c

我有一个功能

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被改变了?

1 个答案:

答案 0 :(得分:6)

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

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

要分配不考虑作用域而持久存储的内存,请使用malloc()在堆上进行分配。