c-我应该在什么尺寸上进行malloc结构



大多数使用C中结构的示例使用malloc将所需的内存大小块分配给指向该结构的指针。但是,将具有基本类型的变量(intchar等)分配给堆栈,并假定将有足够的内存可用。

我理解这背后的想法是,内存可能无法用于较大的结构,因此我们使用malloc来确保我们确实有足够的内存,但是对于我们的结构很小,这真的是必要的吗?例如,如果一个结构仅由三个int组成,那么我总是可以假设有足够的内存?

所以我的问题确实归结为C中关于何时需要malloc变量的最佳实践,什么是理由?

您唯一不必分配内存的时间是当您静态分配内存时,这就是当您拥有类似语句的情况时发生的情况:

int number = 5;

您可以随时将其写为:

int *pNumber = malloc(sizeof(int));

,但是您必须确保释放它,否则您将泄漏内存。

您可以使用一个结构(而不是动态分配内存,静态分配):

struct some_struct_t myStruct;

和访问成员:

myStruct.member1 = 0;
etc...

动态分配和静态之间的最大差异是该数据是否在当前范围之外可用。通过静态分配,事实并非如此。它是动态的,但是您必须确保释放它。

遇到麻烦的地方是您必须从函数返回结构(或指针)。您要么必须在返回它的函数中动态分配,要么必须将指针传递给外部(动态或静态)分配的结构,然后该函数可以与。

良好的代码被重复使用。好的代码几乎没有尺寸限制。编写好代码。

只要有琐事的缓冲尺寸,请使用malloc()

  1. 缓冲区大小编写int:所需的缓冲区大小最多是sizeof(int)*CHAR_BIT/3 + 3。使用固定的缓冲区。

  2. 缓冲区大小如sprintf(buf, "%f",...中的double:所需的缓冲区大小可能是数千个字节:使用malloc()。或使用sprintf(buf, "%e",...并使用固定的缓冲区。

  3. 形成文件路径名可能涉及数千个char。使用malloc()

相关内容

  • 没有找到相关文章

最新更新