sách gpt4 ai đã đi

Kỹ thuật/thực hành quản lý bộ nhớ C++

In lại 作者:可可西里 更新时间:2023-11-01 16:37:44 29 4
mua khóa gpt4 Nike

我用 C++ 开始了一个项目。这种语言的内存管理对我来说是新的。

我过去常常使用 new () 创建对象,然后传递指针,虽然它可以工作,但调试起来很痛苦,人们看到代码时会用有趣的眼神看着我。我为它没有泄漏或段错误(一旦修复)而感到非常自豪,但这确实付出了很多努力。

list  users;

struct Connection * accept_connection (const char *name) {
struct Connection * new_node = new Connection ();
new_node->_data = ... // whatever, set it up here
return new_node;
}

struct Connection * new_user = accept_connection (const char *name);
users.append (new_user);

因此,我为项目的下一个版本制定了新策略。到目前为止,我所做的是使用 new () 创建对象并为它们分配一个唯一的整数 ID 号。然后,我使用 ID 作为键将该对象存储在哈希表中。现在项目通过整数 ID 号存储和传递,当您确实需要取消引用它时,您转到哈希表,它返回给您 thing * hoặc VÔ GIÁ TRỊ。因此,我不再遇到指针错误,但代码速度有所降低。

typedef unsigned long ID_Number;

// create a user and return the ID
ID_Number create_user () {
ID_Number new_id = assign_unique_id ();
struct User * node = new User ();
node->_id = new_id;
node->_data = ... // whatever, set it up here
add_to_users_dict (new_id, node);
return new_id;
}

list users;

for_each (users.begin(), users.end(), process_user);

void process_user (ID_Number i) {
struct User * u_ptr = lookup_user_dict (i);
if (u_ptr == NULL) {
// not found in dict
// somehow this guy was deleted
} khác {
// we can do stuff with this guy
}
}

现在我有点熟悉编程的基本原则,但作为一个自学成才的爱好者,我不熟悉行业实践和工具。我基本上要求的是内存管理指南:

1) 我做对了什么或做错了什么?

2) 是否有任何我可以使用的包或库对我有帮助?

3) 行业的标准做法是什么?

4) 基本上我应该用谷歌搜索或为 kindle 等购买什么?

现在我通常使用 Python,它确实为我处理了很多“后端”的东西,但我需要 C 或 C++(我想我使用的是纯 C 加上 stdc++ 库,我不太确定在哪里语言之间的重叠是——我只知道 g++ 可以很好地编译它)对于这个特定项目出于速度/性能原因:尽管我怀疑一些数学天才可以提供算法修复来加速它,尽管这是一个单独的问题。

1 Câu trả lời

我能给出的最佳答案是,您不应该以传统方式使用指针。 C++11 改变了程序员处理内存管理的方式。

我不会解释那些比我聪明得多的人已经详细解释过的事情,我只会提供一些链接。

您应该首先查看 Herb Sutter 的文章 Elements of Modern C++ Style然后查看 Bjarne Stroustrup 的视频 C++11 Style

如果您能够使用新的 C++11 标准,那么它会使内存管理比以前更清晰。

关于C++ 内存管理技术/实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10705754/

29 4 0
可可西里
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com