我只是有一个关于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个点分配给一个长指针变量时,这样的事情是如何工作的?也可以随意提供示例和解释,但请不要泄露整个程序应该如何工作,因为一旦我完全理解这部分是如何工作的,我想自己弄清楚。感谢
答案 0 :(得分: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编程范式讲座。在这些讲座中,内存分配的解释非常好。您还可以参考C编程语言的第8章 - 来自Denis Ritchie