memory-management 相关问题

动态分配和释放部分物理内存的过程,以便在请求者之间尽可能公平并且没有饥饿的情况下响应程序请求。

C 将动态分配的结构收缩为结构中的单个元素

在优化我的代码时,我注意到我调用 malloc 的频率太高了。具体来说,我释放了一个结构,然后重新分配了相同的元素,在我释放的结构中,使用 s...

回答 1 投票 0

C 中数组释放内的链表

我有这些结构: typedef 结构 Nodo{ int id_nodo; 结构诺多*下一个; 诺多; 类型定义结构{ Nodo *头; } inmap; //结构Grafo 类型定义结构{ 整数N; // numero dei nodi ...

回答 1 投票 0

boost、共享 ptr 与弱 ptr?什么时候使用哪个? [重复]

在我当前的项目中,我非常广泛地使用 boost::shared_ptr 。 最近我的队友也开始使用weak_ptr。我不知道该使用哪一个以及何时使用。 除此之外还有什么

回答 4 投票 0

C 内存访问错误分段故障 -

uint32_t binDataSize = 0; void *binData =Snapshot_Recovery(argc, argv, &binDataSize); snapshot_header *snapPtr = (snapshot_header *)malloc(binDataSize); printf("bindataSize 为 %u &quo...

回答 1 投票 0

使用 mmap() 后显示文件内容时出现意外输出

我正在解析 .elf 文件以编辑其中的一些详细信息。我使用 open() 打开文件,然后使用 mmap() 为其创建内存映射,以便于编辑。 问题是我越来越 unex...

回答 1 投票 0

如果 unique_ptr 在销毁时释放其指针,我该如何知道指向同一内存的其他指针是否仍然有效?

我目前正在努力理解 unique_ptr 的用途。 我想在其他地方对存储在其中的 std::unique_ptr 组件的内容进行某种引用...

回答 2 投票 0

unique_ptr 的正确用法是什么?

我目前正在努力理解 unique_ptr 的用途。 我想在其他地方对存储在其中的 std::unique_ptr 组件的内容进行某种引用...

回答 2 投票 0

uinque_ptr 的正确用法是什么?

我目前正在努力理解 unique_ptr 的用途。 我希望在任何实例中存储的“std::unique_ptr 组件”内容的其他地方有某种引用...

回答 1 投票 0

释放从c++中的函数返回的已分配内存

我有一个问题找不到答案。 如果我有一个这样的函数: char* f1(char ch, int len) { char* s1=新的char[len+1); for(int i; i 我有一个问题找不到答案。 如果我有这样的功能: char* f1(char ch, int len) { char* s1=new char[len+1); for(int i; i<len; i++) s1[i]=ch; s1[len]=0; } 我这样称呼它: char* str; str=f1("A", 10); std:cout << "Something " << str << std::endl; delete[] str; 一切都好,但如果我想像这样使用它更短: std:cout << "Something " << f1("A", 10) << std::endl; 我最终会分配到无法释放的内存。 请记住,内存泄漏不好,应该避免 - 有没有办法以正确的方式做到这一点? 尝试在互联网上搜索但没有结果。 考虑创建从函数分配的指针列表,并稍后在某个地方释放它们,但这不是最好/安全的方法,因为它很容易混乱。 您可以像这样使用 std::unique_ptr: #include <memory> #include <iostream> typedef std::unique_ptr<char[]> MyPtr; MyPtr f1(char ch, int len) { MyPtr s1(new char[len+1]); for(int i=0; i<len; i++) s1[i]=ch; s1[len]=0; return s1; } int main() { std::cout << "Something " << f1('A', 10).get() << std::endl; } 背景:从 f1 返回的对象在语句结束时被销毁——也就是说,在执行该行之后,当到达 ; 时。 当然,归根结底,您应该只使用 std::string——毕竟,您使用的是 C++... #include <iostream> #include <string> int main() { std::cout << "Something " << std::string(10, 'A') << std::endl; } 您的代码中有几个问题: f1 应该返回 char* 但不包含 return 语句(如 return s1;)。 您用 f1 呼叫 f1("A", 10)。但第一个参数应该是 char 而“A”不是。应该是f1('A', 10)。 在 C++ 中,不建议使用原始 C 数组。它的问题之一是您遇到的需要手动内存管理。最好使用标准库类,如 std::vector(用于通用动态数组),或者在这种以空结尾的字符数组的情况下 - 使用 std::string。 std::string已经有一个构造函数,它接受长度和字符并创建一个字符串,就像你的f1尝试做的那样,所以你可以简单地使用: std::cout << "Something " << std::string(10, 'A') << std::endl; 输出: Something AAAAAAAAAA 现场演示

回答 2 投票 0

释放从c++中的函数返回的已分配内存

我有一个问题找不到答案。 如果我有一个这样的函数: char* f1(char ch, int len) { char* s1=新的char[len+1); for(int i; i 我有一个问题找不到答案。 如果我有这样的功能: char* f1(char ch, int len) { char* s1=new char[len+1); for(int i; i<len; i++) s1[i]=ch; s1[len]=0; } 我这样称呼它: char* str; str=f1("A", 10); std:cout << "Something " << str << std::endl; delete[] str; 一切都好,但如果我想像这样使用它更短: std:cout << "Something " << f1("A", 10) << std::endl; 我最终会分配到无法释放的内存。 请记住,内存泄漏不好,应该避免 - 有没有办法以正确的方式做到这一点? 尝试在互联网上搜索但没有结果。 考虑创建从函数分配的指针列表,并稍后在某个地方释放它们,但这不是最好/安全的方法,因为它很容易混乱。 您可以像这样使用 std::unique_ptr: #include <memory> #include <iostream> typedef std::unique_ptr<char[]> MyPtr; MyPtr f1(char ch, int len) { MyPtr s1(new char[len+1]); for(int i=0; i<len; i++) s1[i]=ch; s1[len]=0; return s1; } int main() { std::cout << "Something " << f1('A', 10).get() << std::endl; } 当然,归根结底,您应该只使用 std::string——毕竟,您使用的是 C++...

回答 1 投票 0

为什么栈内存和堆内存的 memset 性能不同?

我正在对不同的编程语言进行基准测试,发现了一个有趣的问题。堆栈内存和堆内存的 memset 性能不同。我没有发现明显的原因。对于前...

回答 1 投票 0

什么是类加载器泄漏?

我在谷歌中看到了如何解决类加载器泄漏的方法,但没有任何地方解释什么是类加载器泄漏? 假设我加载一个对象 Person person = new Person() 那么 Person 类将被加载...

回答 3 投票 0

从内核分配用户空间内存

我正在尝试打电话 sys_readlink(const char __user *path, char __user *buf, int bufsiz) 直接,但得到 EFAULT 错误代码。出现此错误是因为 buf 指向内核空间的内存。 所以...

回答 2 投票 0

当我的方法运行完毕时,垃圾收集器会释放这个列表吗

假设我有类似的东西: 公开课项目 { 公共字符串代码; 公共列表代码=新列表(); } 私有无效SomeMethod() { 列表 项目...

回答 5 投票 0

为什么指向同一资源的原始指针和智能指针 unique_ptr 不会导致任何问题? (C++)

我知道unique_ptr使智能指针拥有资源,因此它不允许多个指针指向同一资源。 但为什么允许创建它的原始指针......

回答 1 投票 0

Ada - 从异构列表中释放

操StackOverflow,操OpenAI。

回答 1 投票 0

在我删除全局环境中的所有对象并运行垃圾收集器后,如果 R 仍然使用大量内存,我该怎么办?

使用 dplyr 和数据库连接进行大量数据处理后,我发现连接到 Rstudio 实例的 R 会话使用了大量我认为不需要的内存(6 GB)...

回答 1 投票 0

为什么 C 中允许结构体中存在未定义大小的数组?

当我编写以下代码时,我收到预期的错误:'data'中缺少数组大小。 int main() { 无符号字符数据[]; 返回0; } 但是,当我运行相同的代码但包装

回答 2 投票 0

f# 解释器运行的内存使用优化

我有一个很愚蠢的问题,但到目前为止我还没能回答。 我开始用 f# 编写一个小程序,只是为了用这种语言进行一些修改,但出现了一个问题...

回答 2 投票 0

适当的内存释放

如果我有: 类 Foo{ 条**条=新条*10; }; 类酒吧{ 字符串温度; }; 如果我有一个 Foos 数组: Foo* foos = 新的 Foo[5]; 如果我想删除数组,应该像这样: for(int i = 0; i...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.