10得票5回答
内存分配函数是否表明内存内容不再使用?

处理数据流时,例如来自网络的请求,通常会使用一些临时存储器。例如,URL可能会分成多个字符串,每个字符串可能会从堆中分配内存。这些实体的使用通常是短暂的,总内存量通常相对较小,并且应适合于CPU缓存。 释放临时字符串所使用的内存时,字符串内容可能仅存在于缓存中。然而,CPU不知道内存已被解除...

10得票5回答
std::string的默认容量是多少?

使用默认构造函数创建 std::string 时,是否会在堆上分配任何内存?我希望答案不依赖于实现,并且是标准化的。请考虑以下情况:std::string myString;

10得票4回答
这个数组是静态的,但数组大小直到运行时才知道。这怎么可能呢?

这个问题困扰了我一段时间。它涉及到我对静态和动态内存分配之间区别的(缺乏)理解的核心。以下数组是一个普通的静态数组,这应该意味着内存在编译时分配,对吗?然而,我已经设置它以便用户可以在运行时输入数组大小。#include <iostream> using namespace std...

10得票4回答
free()函数释放内存后,该内存的内容会变得不确定。

我知道在硬盘上,如果你删除一个文件,数据并不会(立即)消失。只有当数据被覆盖时,它才会消失。我想知道在内存中是否存在类似的概念。比如说,如果我为一个字符串分配了256个字节,那么即使我使用 free() 释放了它,这个字符串是否仍然漂浮在内存中,直到被覆盖?

9得票5回答
分配具有可变长度数组成员的结构体

我知道我可以使用new char[n]来创建一个包含n个字符的数组。即使n不是编译时常量,这也有效。 但是假如我想要一个大小变量和随后的n个字符: 我的第一次尝试如下: struct Test { std::size_t size; char a[]; }; 然而,似乎new...

9得票1回答
Java数组初始化为零大小

在Java中声明数组时,我们必须使用new关键字动态分配内存。 class array { public static void main(String ars[]) { int A[] = new int[10]; System.out.println(A.lengt...

9得票5回答
realloc()无效的旧大小。

我很愉快地参加了KandR C编程书的一个习题。该程序用于在用户输入的一组字符串中查找最长的行并将其打印出来。 以下是我部分的代码,其中有些部分直接引用了书中的内容: #include <stdio.h> #include <stdlib.h> int MAXLI...

9得票4回答
使用汇编语言 x86 中的 brk() 调用

我想动态分配堆内存,然后在这些内存地址中分配值。我知道如何分配内存,但是如何将寄存器中的值分配给第一个动态内存地址呢?以下是我的代码: push rbp mov rbp, rsp ;initialize an empy stack to create a...

9得票4回答
在类中声明变量的内存分配

作为值类型变量,内存在堆栈中分配,而参考类型则在堆中分配。 当一个值类型变量(如“int i = 4;”)在引用类型(如类中)中声明时,内存是如何分配的? .NET中的值类型和引用类型的整体内存分配方式,以及引用类型作用域内的值类型的内存分配方式是如何工作的,请解释或提供相关链接。

9得票1回答
使用calloc()相比于malloc()和memset()有哪些优势?

我在思考是否使用 calloc() 比使用 malloc 后跟 memset 更可取。 后者似乎是分配和初始化内存的最常见方法。 github代码搜索 出现了许多 calloc 测试和实现,但在前几页中没有任何实际使用 calloc 的代码。 是否有人知道任何使用或推荐使用 calloc...