Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
malloc如何区分我分配一个长整数和一个由两个整数组成的数组?_C_Memory_Malloc_Allocation - Fatal编程技术网

malloc如何区分我分配一个长整数和一个由两个整数组成的数组?

malloc如何区分我分配一个长整数和一个由两个整数组成的数组?,c,memory,malloc,allocation,C,Memory,Malloc,Allocation,在我的操作系统中,long int是:8字节。 int是4个字节 int *p = malloc(4); 此代码为堆上integer类型的变量分配4个字节 int *p = malloc(8); 这将在数组中分配一个长整数,如“一个变量”或两个项 如何分配一个8字节长的整数? 如何分配包含2项的数组?如果需要8字节整数,则称为long或/: 如果这是关于C的,那么您可以使用malloc: int64_t* p = malloc(sizeof(int64_t)); 如果这是C++,那么你使用

在我的操作系统中,long int是:8字节。 int是4个字节

int *p = malloc(4);
此代码为堆上integer类型的变量分配4个字节

int *p = malloc(8);
这将在数组中分配一个长整数,如“一个变量”或两个项

如何分配一个8字节长的整数?
如何分配包含2项的数组?

如果需要8字节整数,则称为
long
或/:

如果这是关于C的,那么您可以使用
malloc

int64_t* p = malloc(sizeof(int64_t));

如果这是C++,那么你使用<代码>新< /代码>:

int64_t* p = new int64_t;
使用原始代码,您将获得映射到固定大小类型指针的任意大小的分配,其中
int
通常为4个字节,或者换句话说,您有空间容纳
int[2]

注意:出于可移植性的原因,最好用基本类型来表示分配,而不仅仅是抽象数字
malloc(8)
可以为2 x
int
分配内存,也可以不分配,这取决于
sizeof(int)
是什么<代码>malloc(sizeof(int)*2)始终正常工作

malloc()

int *p = malloc(2 * sizeof(int));
将内存视为2
int
的数组。然后,您可以执行以下操作:

p[0] = 1;
p[1] = 2;
它将向内存中写入两个
int

long int *p = malloc(sizeof(long int));
将内存视为单个
long int
(或相当于1个
long int
的数组)。然后你可以做:

*p = 12345678;
它会将长整数写入内存

long int *p = malloc(sizeof(long int));

int
为4字节且
long int
为8字节的系统上,它们都将分配8字节的内存。

malloc()
不知道数据类型,它只分配内存。
malloc()
不关心数据类型大小。分配大小为*数据类型大小的内存时,由您自己进行计算。与:(对问题和接受的答案进行第一次注释)相关,因此我需要指定指针类型(long int*p=),以便程序知道我想要的是一个长整数,而不是2个整数的数组是。当您使用
p
时,它使用它的类型来了解如何解释它指向的内存。这就是您必须指定指针类型的原因。因此,如果我执行int*p=malloc(5),则会发生什么情况?当您取消引用指针时,将使用分配的前4个字节,多余的字节将被忽略。