0

我只是有一个关于 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 指针变量时,这样的事情是如何工作的?也可以随意给出示例和解释,但请不要泄露整个程序应该如何工作,因为一旦我完全理解了这部分的工作原理,我想自己弄清楚。谢谢

4

1 回答 1

2

内存分配与类型无关,即它是否是 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 节 Stan-Ford Programming Paradigm 讲座。在这些讲座中,内存分配的解释非常好。您也可以参考 The C 编程语言的第 8 章 - 作者 Denis Ritchie

于 2013-02-23T07:46:43.170 回答