gpt4 book ai didi

c++ - 如何确定某些东西在分层结构的内存中的存储位置

转载 作者:行者123 更新时间:2023-11-30 02:47:36 24 4
gpt4 key购买 nike

我正在处理一项作业,该作业涉及内存、静态、堆栈或堆中的位置。我了解基础知识,但对以下问题感到困惑:

如果对象是类的公共(public)成员函数的局部变量,则存储在 C++ 字符串对象中的字符。

我对如何确定这样一个字符在内存中的存储位置感到困惑。我希望将函数的激活记录推送到堆栈,然后字符串是该激活记录的一部分,因此关联的字符也在堆栈上。它是否正确?

是否有通用的方法来解决这个问题?我是否应该关心所有的外层,或者是否有一种方法可以充分推断出某些东西在内存中的存储位置,而不用担心它在代码中存储位置的所有细微差别?

最佳答案

不一定。如果您在堆栈上声明一个 std::string(例如作为局部变量),那么它的所有成员变量 都位于堆栈上。它的成员变量可能包括一个长度字段和一个指向字符数组的指针。 (这取决于标准库的实现:该标准并未准确定义 std::string 必须具有的私有(private)成员。)

不过,字符本身不在堆栈中。 std::string 使用 new 动态分配其内存,因此字符数据在堆上。

关于c++ - 如何确定某些东西在分层结构的内存中的存储位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22639323/

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