gpt4 book ai didi

不同内存位置内的 C++ 默认数组值

转载 作者:搜寻专家 更新时间:2023-10-31 01:24:25 24 4
gpt4 key购买 nike

它与上述问题不重复,因为未涵盖statics 差异并且答案有错误。

这是一个关于进程内内存组织的基本分解问题,更具体地说,是默认数组值。

在下面的代码中:
arr1 静态分配在靠近机器指令的内存块中,并且在某些时候默认初始化为 0
arr2 应该在创建函数框架时分配在堆栈上,它永远不会被默认初始化
arr3arr1 相同 [?]
arr4arr2 相同 [?]
arr5 ... 除了上述两个问题,现在我的主要问题是类中的 static 变量与 static 有何不同函数内的变量?我无法访问未初始化的 arr5 元素。在哪些情况下我可以?

int arr1[5];    

void func() {
int arr2[5]; printf("%d\n", arr2[0]); // [2]
static int arr3[5]; printf("%d\n", arr3[0]); // [3]
}

class MyClass {
public:
int arr4[5];
static int arr5[5];
};

int main()
{
printf("%d\n", arr1[0]); // [1]

func();

MyClass obj;
printf("%d\n", obj.arr4[0]); // [4]
//printf("%d\n", obj.arr5[0]); // [5]


std::cin.get();
}

输出:

0
-858993460
0
-858993460

最佳答案

根据 this article arr5 已声明但未定义。

添加

int MyClass::arr5[5];

类 MyClass 声明之后。比你可以获得 obj.arr5[0]

class MyClass {
public:
int arr4[5];
static int arr5[5];
};

int MyClass::arr5[5];

关于不同内存位置内的 C++ 默认数组值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58130752/

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