如何动态分配随机数。 C中的字节数?
(比方说)我想分配10 GB的内存,我该怎么做呢?哪个功能在这里使用会更好,如malloc,realloc或calloc(因为我不知道) b / w他们的差异。)
另外,我可以在内存中分配任何类型的数据(并且整个数据应该是同一类型吗?)?
答案 0 :(得分:0)
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()
将内存返回给系统。
答案 1 :(得分:0)
您可以使用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];
,用指针访问它。