<分区>
我有一个关于将 未声明的字符串
传递给 Function
的问题。
下面的代码编译并正常工作(因为字符串被正确打印)。我试图了解代码如何在内存分配方面工作的细节(编译器是否从“字符串”生成一个临时变量并将其实际传递给函数?)。 p>
通常我会声明一个 char
数组来保存字符串,然后将其传递给函数 - 这在内存分配方面很有意义。
如果按照下面的程序直接传递字符串(例如,一个长时间运行的程序将大量字符串传递给日志 - 每个字符串传递是否创建一些一种新的字符串变量,其内存永远不会被释放等)。
代码 - 在 Visual Studio 2013 中编译
#include <stdio.h>
//Function Declaration
int MyFunction(char *SomeString);
int main(void)
{
MyFunction("MyString");
return 0;
}
//Function Code
int MyFunction(char *SomeString) {
printf("Passed String: %s \n", SomeString);
return 0;
}