gpt4 book ai didi

c - 使用为其他类型声明的内存

转载 作者:行者123 更新时间:2023-12-04 12:20:24 27 4
gpt4 key购买 nike

如果我要为一个四字节的变量初始化内存,我是否能够将两个两字节的变量指向为其存储的内存?我正在尝试进一步了解内存管理和理论。

举个例子:

int main() {
short* foo = malloc(4*(foo)); // sizeof(*foo)?
/*in which sizeof will return 2 so I could say
* malloc(20)
* so could I say malloc(2*sizeof(long))?
*/
}

或者是通常在堆上彼此相邻声明的类型,即一个 block 是为 long 类型的变量保留的,一个 block 是为 short 类型的变量保留的?

编辑我忘了包括一个问题。如果我要声明两个彼此相邻的 short 类型的变量(一个数组),我可以安全地将 long 指向第一个项目,并通过位图访问这两个变量吗?显然这主要是为了理论,因为我觉得会有更好、更明显的问题答案。

最佳答案

是的。当您分配内存时,C 并不关心类型——它只是一 block 与您请求一样大的内存。它会让你在里面、上面、下面写字……直到坏事发生!

如果你想要相邻的值,数组是一个很好的方法:

int *myAllocatedArray = (int*)calloc(2, sizeof(int));

myAllocatedArray[0] = 100;
myAllocatedArray[1] = 200;

calloc 会将每个字节初始化为 0。

关于c - 使用为其他类型声明的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811666/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com