为64个8字节块分配内存

时间:2014-10-20 14:39:24

标签: c memory

如何为64个8字节块分配内存? 我试过在uint64上阅读,但我不知道从哪里开始。

3 个答案:

答案 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);
}