【问题标题】:allocating random no. of bytes in c [duplicate]分配随机编号c中的字节数[重复]
【发布时间】:2014-08-14 14:16:21
【问题描述】:

如何动态分配随机编号。 C 中的字节数?

(说)我想分配 10 GB 的内存,我该怎么做?在这里使用哪个函数会更好,比如 malloc、realloc 或 calloc(因为我不知道b/w 的区别)。

另外,我可以将任何类型的数据(并且整个数据应该属于同一类型吗?)然后分配到内存中吗?

【问题讨论】:

  • 注意:我想分配 10 GB 的内存:这是非常大的内存量。检查整个内存是否必须是连续的...

标签: c memory-management dynamic-memory-allocation


【解决方案1】:

你可以使用 malloc 或 calloc

SomeType *pointername = (SomeType*) malloc(numberof bytes for aloc.);
SomeType *pointername = (SomeType*) calloc(n,numberof bytes);//alocates n*number of bytes,and clears that memory with zero bytes

是的,您可以在该内存中放置您想要的任何数据

我认为 Malloc 应该更快,因为它不会清除内存。

当您已经拥有分配的内存并且您希望将其变大或变小时,使用 Realloc。

只有当你想以 na 数组的形式访问时,所有数据必须是相同的类型:

x=pointername[i];

,不喜欢用指针访问它。

【讨论】:

    【解决方案2】:

    C 中有四个关于它的函数:

    void *calloc(size_t nmemb, size_t size);
    void *malloc(size_t size);
    void free(void *ptr);
    void *realloc(void *ptr, size_t size);
    

    函数malloc() 分配size 字节。函数calloc() 分配nmemb*size 字节(即,它为由nmemb 元素组成的数组分配内存;此函数还清除分配的内存)。函数realloc() 改变分配块的大小。并且free() 将内存返回给系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-16
      • 2015-03-22
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2014-11-30
      • 2013-12-24
      相关资源
      最近更新 更多