gpt4 book ai didi

带有 char 数组的 C++ 内存池

转载 作者:行者123 更新时间:2023-11-28 03:22:38 26 4
gpt4 key购买 nike

我只是有一个快速的问题,关于 char 数组如何在内存池和分配其他变量类型的指针方面工作。我正在处理一个使用 char 数组作为内存池的分配,我需要能够分配指向它的指针,我已经阅读了一些关于这个主题的信息,但我不太了解实际分配的工作方式比如:

const int poolSize = 60000;
char pool[poolSize];

void* allocate(int aSize)
{

//.....

return ((void*) 0);
}

long* pointer;
pointer = (long *) allocate(sizeof(long));
*pointer = 0xDEEDEEEF;

我只是不太明白它是如何工作的,因为一个 char 是 1 个字节,而一个 long 应该是 4 个字节,所以当我需要将数组中的 4 个点分配给一个长指针变量时,这样的事情是如何工作的?也可以随意提供示例和解释,但请不要透露整个程序应该如何工作,因为一旦我确切了解这部分的工作原理,我想自己弄清楚。谢谢

最佳答案

内存分配与类型无关,即它是否是 long/char.etc 但事实是,它是按“字节”量化的。 char是唯一占用一个字节内存的数据类型。

如何处理分配的内存取决于您的程序。例如

char s[4]={0,0,0,'A'};
int *p = (int*)s; //treating those 4 bytes as int
printf("%d",*p); //will print 65

我建议您先观看 4-5 节斯坦福编程范式讲座。这些讲座中对内存分配的解释非常好。您还可以引用 The C programming language - by Denis Ritchie 的第 8 章

关于带有 char 数组的 C++ 内存池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15038276/

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