我有一个功能
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
被改变了?
答案 0 :(得分:6)
可能是因为您的buffer
超出了范围。你不能“坚持”局部变量的地址,一旦它们超出范围,地址就会失效。
正如一堆恼火的评论所表明的那样,如果没有看到你的代码,这是不可能真正回答的。希望你应该明白这一点,否则你会在这里期待魔法。
要分配不考虑作用域而持久存储的内存,请使用malloc()
在堆上进行分配。