我是C的新手(以及C中的结构).我在互联网上看到了不同的代码示例,但这样做有什么好处:
void foo(LargeStruct* struct); 
而不是这个
void foo(LargeStruct struct);
它是否使内存管理更容易?
C struct按值传递s.这意味着具有第二个签名的函数将复制整个函数LargeStruct以便将其传递给foo.就存储器使用而言,这是不经济的.
更糟糕的是,分配LargeStruct会发生在自动内存中(也称为"堆栈上").根据您的实际大小,struct在某些系统上可能无法进行调用,因为它会导致堆栈溢出.
另一方面,第一种方法传递structby指针.指针的大小不依赖于大小LargeStruct.