所以我试图编写自己的'malloc'库,但我的全局变量遇到了问题。
在下面的代码中,您可以看到我正在创建一个int指针,将一个整数写入char数组,并且该int指针指向我的char数组的第一个字节,认为它是一个整数的内存。
char myMemory[1048576];
int* pMem = (int*)(&myMemory[0]);
*pMem = (1048576-5);
myMemory[4] = 'f';
//... and so forth
对于最后一行,我收到以下错误消息:
redefinition of 'myMemory' with a different type 'int [4]' vs 'char [1048576]'
对于* pMem =(...);我得到以下]
invalid operands to binary expression 'int*' and 'int*'
也许我不允许在全局范围内更改全局变量,而当我在测试函数中执行相同的操作时,一切正常。
对我来说,在互联网上发现这一点是不可能的,因为每个人都在问如何在函数中更改全局变量。]
我希望有人可以帮助我,因为否则我会很快烧毁我的房子。预先谢谢你。
Tim
因此,我试图编写自己的'malloc'库,但全局变量存在问题。在下面的代码中,您可以看到我正在创建一个int指针,将整数写入char -...
尽管尚不清楚您对这段代码有什么意图,但前两个是全局的(如您所述。)属于函数之外,可能位于头文件中,或位于.c文件的顶部。如果在函数内调用,则最后两个命令将正确运行。
char myMemory[1048576];
int* pMem = (int*)(&myMemory[0]);
int main(void)
{
*pMem = (1048576-5);
myMemory[4] = 'f';
return 0;
}