C-全局变量的声明(重新定义)问题

问题描述 投票:0回答:1

所以我试图编写自己的'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 global-variables redefinition
1个回答
0
投票

尽管尚不清楚您对这段代码有什么意图,但前两个是全局的(如您所述。)属于函数之外,可能位于头文件中,或位于.c文件的顶部。如果在函数内调用,则最后两个命令将正确运行。

char myMemory[1048576];
int* pMem = (int*)(&myMemory[0]);

int main(void)
{ 
    *pMem = (1048576-5);
    myMemory[4] = 'f';

    return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.