如何为64个8字节块分配内存? 我试过在uint64上阅读,但我不知道从哪里开始。
答案 0 :(得分:1)
这应该很简单。运行:
void *foo = malloc(64 * 8);
或者,如果你想要类型安全:
#if (CHAR_BIT != 8) #error Weird broken system, give up... #endif
uint64_t *foo = malloc(sizeof(uint64_t[64]));
答案 1 :(得分:1)
在c中,malloc
分配指定的字节数,因此如果要分配64个8字节块,则必须分配malloc(64*8)
。别忘了free
他们。
如果您不打算以dinamically方式分配它们,则可以声明一个数组。在c中,有一个名为uint64_t
的64位(8字节)类型,因此您可以通过这种方式声明一个包含8个字节的64个元素的数组:uint64_t blocks[64]
。
作为评论中问题的回复,声明变量将使其在范围内有效。因此,如果您全局声明数组,它将在程序关闭之前有效。如果你在if
条件中声明它(例如),它将仅在条件内有效。阅读本文以更好地了解其工作原理:https://www.clear.rice.edu/elec201/ictutorial/tut2-4.html
如果你将malloc
分配一段记忆,它的方向必须保存在一个变量中,以便你以后可以访问它,这里应用相同的范围规则,但不要在丢失方向指针之前忘记free
内存,否则会发生内存泄漏。
如果您没有太多经验,我建议您不要使用malloc
。
答案 2 :(得分:1)
您只需使用malloc
:
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
int main()
{
void* ptr = malloc(sizeof(uint64_t) * 64);
printf("Allocated memory begins at %p", ptr);
}