dynamic-memory-allocation 相关问题

动态内存分配,通常在没有垃圾收集或强制或自动引用计数的语言环境中,是指进程或向操作系统询问可变大小的内存块。

作为三重指针的 char temp 变量在第一次迭代后不会更新

我正在尝试做一个大学项目。我正在尝试将 u1、u2、u3 等用户的 ID 存储在临时三重指针中,以便我以后可以使用它们,但问题是首先...

回答 0 投票 0

使用动态内存分配将元素添加到数组

我在这里尝试简单地为 feld[N] 添加一个元素,但我不知道如何添加。我在 Internet 上搜索帮助,但没有任何帮助。如果有人能...那就太棒了

回答 3 投票 0

我有一个内存泄漏,我找了大约 4-6 个小时,但找不到它

我正在编写一个程序,该程序使用动态内存分配来获取几行文本作为输入,然后向后写这些行,向后写行中的单词。当 realloc 没有错误时

回答 0 投票 0

C 如何释放动态分配数组的所有字节

#include #include 内部主要(){ int * ptr = (int*)malloc(sizeof(int)*100); // 为 100 个整数分配空间 //一些代码 免费(ptr);<-calling free w...

回答 1 投票 0

内存分配和输入的问题(C)

我的目标是读取用户的输入并将用户给出的每个单词存储在一个动态分配的数组中,我称之为“str”。但是,我有两个问题。一、函数leArgs中

回答 1 投票 0

为什么要使用 ChangeSize1D?

我了解了数据结构,我可以知道某些 ChangeSize 方式 模板 void ChangeSize1D(T*& a, const int oldSize, const int newSize) { 如果(新大小< 0) thr...

回答 1 投票 0

在C++中使用new时内存是顺序分配的吗?

假设我们使用以下方法为 5 个 int 类型的变量分配内存: int* ptr = new int[5]; 那么如果我是对的,分配内存的地址应该是随机的?例如: 如果

回答 1 投票 0

优化内存+缓存设置以在 GridDB 中更快地处理 SQL

我正在使用 GridDB 作为我的内存数据库,我打算在它上面运行大量的 SQL 查询。 底层数据有很多列/属性,分布在很多表中。 把它想象成大量的...

回答 0 投票 0

C 中的堆栈和动态内存

Exercise:从用户那里读取一行并以相反的顺序打印单词。考虑到问题的性质,我实现了一个单链表来存储单词,然后从 ...

回答 1 投票 0

C++ 中的 CrtIsValidHeapPointer(block) 错误 -- 内存删除

基本上,在代码中有一个类“Board”,包括来自结构对象“slot”的称为 head 和 tail 的指针,指向动态分配的列表,这些列表位于插槽的 cl 属性中......

回答 1 投票 0

使用 realloc 获取段错误

我正在尝试解决最近在我朋友的大学考试中出现的以下问题(现在考试结束并发布论文)。 开发一个C程序来管理儿子的播放列表...

回答 1 投票 0

使用向量和数组在相同代码中的不同输出

这是C++代码 #包括 使用命名空间标准; 主函数() { 长整型_=1; 辛 >> _; 尽管(_ - ) { long long int n,i,even=0,odd=0; ...

回答 0 投票 0

使用 malloc 比声明变量数组以供运行时使用的方法有什么好处

考虑以下两个代码: #include 无效主要(){ 整数; scanf("%d",&num); 整数 arr[num]; 对于(int i=0;i 考虑以下两个代码: #include<stdio.h> void main() { int num; scanf("%d",&num); int arr[num]; for(int i=0;i<num;i++){ arr[i] = i+1; } } #include<stdio.h> #include<stdlib.h> void main() { int num; scanf("%d",&num); int*p=(int*)malloc(num*size of(int)); for(int i=0;i<num;i++){ *(p+i) = i+1; } } 以上两段代码都是为用户给定的大小为num的数组分配内存,然后初始化。但第一个是数组的大小是可变的,所以在编译时编译器提供一些内存空间,它不是(可能)恰好是 num 但可能更多但在运行时 num 大小被分配给它稍后. 虽然对于 malloc one 的情况,不存在最初分配随机内存空间这样的问题,因此我们可以说 malloc 在这个特性方面更好,因此更适合使用? 以上两段代码都是为用户给定的大小为num的数组分配内存,然后初始化 在第一种情况下,arr 被声明为局部变量,因此它使用堆栈中的内存,并且它仅在声明它的函数的持续时间内存在。如果该函数是 main,那么它当然会在程序的生命周期内存在,但是在其他具有更短生命周期的函数中以这种方式声明的数组同样具有更短的生命周期。 在第二种情况下,数组被声明为“动态”——它使用堆中的内存而不是堆栈中的内存,并且即使在创建它的函数退出后也将继续存在。因为程序的堆空间通常比堆栈空间多得多,所以使用 malloc 也很有用,因为它允许创建更大的数组。 因此,例如,程序对从一个文件或多个文件中读取的数据进行操作是很常见的。想象一下编写一个函数来打开一个文件,将数据读入一个数组,并将该数组返回给调用者。如果该函数将数组声明为局部变量,则当函数退出时它将超出范围,您将无法将其返回给调用者。或者,您可以让调用者创建数组并将其传递给读取数据的函数,但是调用者必须提前知道文件中有多少数据,这并不总是可能的。此外,程序员可能事先不知道有多少文件,因此可能会读取多少数组。如果您在每次调用文件读取函数时动态创建一个数组,那么所有这些问题都会消失:您为每个文件获得一个新数组,您可以轻松地将数组返回给调用者,并且可以调整数组的大小以适应文件中的数据量。 malloc()的可能优点: 它在超出范围后仍然存在(例如,您可以做myPointer = malloc(foo); return myPointer;但不能做int myArray[foo]; return myArray;)。 它通常可以毫无问题地处理更大的分配(可用堆几乎总是大于可用堆栈空间) 它允许您优雅地处理错误(通过在出现故障时返回NULL,而不是在像int myArray[foo];这样的事情导致您的堆栈溢出时导致未定义的行为)。 内存可以在分配后调整大小/重新分配。 malloc()的可能缺点: 分配和释放内存时通常较慢 由于局部性,使用内存时可能会变慢 为避免内存泄漏,您必须稍后对内存进行free(),并且绝不能对内存进行多次free()。这需要程序员付出一些额外的努力来保持跟踪(可能包括使用 valgrind 等工具来确保它是正确的)。

回答 2 投票 0

使用动态内存构建堆栈的问题 (C)

我正在尝试学习数据结构,因此我做了一个练习,我们从用户那里读取一个字符串,然后我们评估该字符串,以检查括号是否格式正确,例如 inp...

回答 2 投票 0

使用动态内存构建堆栈的问题 (C)

我正在尝试学习数据结构,因此我做了一个练习,我们从用户那里读取一个字符串,然后我们评估该字符串,以检查括号是否格式正确,例如 inp...

回答 0 投票 0

C++ 类的构造函数中的箭头运算符

我在 C++ 中的哈希表中工作,我希望动态分配它以支持表可能被声明为非常大的大小的情况。 代码正在运行,它看起来像: cl...

回答 2 投票 0

struct rest *r_list 表达式必须是可修改的左值

我正在制作一个恢复管理程序。我想删除动态分配给 detail_an_item() 的指针数组中对应于 rlist[index - 1] 的值,但出现此错误。我该如何解决

回答 1 投票 0

动态数组删除期间的分段错误[关闭]

我有两个班级。 Shape 是基类,Rect 是派生类。我创建了两个动态数组: 形状* pShapes = new Rect[10]; // 1) Rect* pRects = new Rect[10]; // 2) 然后在做了一些

回答 0 投票 0

为什么在使用 `munmap()` 后页面回收仍然存在?

对于一个研究项目,我必须使用 mmap() 和 munmap() 编写 malloc() 和 free() 的重新实现。 我在最后一个 Ubuntu 上运行。对于我的测试,我使用命令 time -v (from /usr/bin/time) w...

回答 1 投票 0

我使用动态分配和函数将二维矩阵相乘。为什么地址变了?

代码是利用A的列和B的行必须相同才能找到矩阵乘积的属性构造的。 当我在不使用动态分配的情况下乘以二维矩阵时它起作用了……

回答 1 投票 0

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