dynamic-memory-allocation相关内容

TRIM函数是否将内存大小减半以删除空格?

我必须创建一个可以执行此任务的函数(Trim函数):获取一个以空结尾的字符串,如果该字符串的第0位有空格,则删除该空格。如果空格在字符串的末尾(在零终止符之前),情况也是一样。因此,该函数基本上忽略了字符串中间的空格。 这是我到目前为止尝试做的事情, (1)我将";a b";字符串传递给Trim函数。 (2)(空指针检查)。 (3)使用strlen函数获取字符串的长度。 ..

如何在c中将静态数组转换为动态数组?

假设我有一个静态数组 int a[10]; 在某个时刻,我要插入第11个元素的程序。因此它将引发错误,显示为Index Out Out Range(索引超出范围)错误。 所以我想创建动态数组a[]。而无需更改静态数组。并且我希望在运行时向数组a[]提供更多的输入(意味着可伸缩性)。 推荐答案 int a[10];替换为int *a = malloc(10 * sizeo ..
发布时间:2022-05-23 14:56:30 其他开发

为什么这段代码被认为是VLA,尽管它使用的是int?

我以为我理解了VLA是什么,直到我在这里看到一个关于动态内存分配与可变长度数组之间的区别的问题。因此,我对动态内存分配没有任何问题,至少目前是这样,但我不理解的是为什么这段代码被认为是VLA: int size = 10; // or whatever int my_array [size] ; // why this is a VLA 更神秘的是,这甚至被认为是VLA const ..

线程中的动态分配和释放

我在线程中分配一些内存。当我调用pthread_detach(pthread_self());时,应该在pthread_exit();或pthread_cancel()终止线程后释放Linux为该线程分配的内存。 我的问题是,我是否也应该释放使用Malloc分配的内存?另外,如果线程中的其他函数分配了一些空间,即使线程被终止并且pthread_detach(pthread_self());在线程 ..
发布时间:2022-05-23 14:39:39 服务器开发

动态数组的惯用初始化是否会调用未定义的行为?

这个问题可能有点争议。 我在块作用域中有以下代码: int *a = malloc(3 * sizeof(int)); if (!a) { ... error handling ... } a[0] = 0; a[1] = 1; a[2] = 2; 我认为这段代码调用ub是因为指针算法超出界限。 原因是a对象指针的有效类型永远不是 设置为int[3],但仅设置为int。因此,对索引处的对 ..

C++删除动态数组的最后一个元素

在C++中,我获取了n个元素的动态数组 int* a = new int[n]; 在将数组所有元素左移后,最后一个元素,即a[n-1]是无用的,我想删除它。 右移后,我需要删除数组的第一个元素,并有一个指向第二个元素的指针,即我需要创建一个长度为n-1的数组。 我如何才能做到这一点? 推荐答案 您需要分配一个新数组,并将原始数组的元素复制到新数组。 这里是一个演示程序 ..
发布时间:2022-05-23 14:01:04 C/C++开发

C++什么是指针=新类型&Q;,而不是&Q;指针=新类型[]?

在许多教程中,关于动态内存的第一个代码样例是这样开始的: int * pointer; pointer = new int; // version 1 //OR pointer = new int [20]; // version 2 他们总是继续解释第二个版本的工作原理,但完全避免谈论第一个版本。 我想知道的是,pointer = new int创建了什么?我能用 ..
发布时间:2022-05-23 13:49:19 C/C++开发

C#如何为列表动态分配内存?

发件人LukeH's答复what is the max limit of data into list in c#? List的当前实现中可以存储的最大元素数理论上是Int32.MaxValue,略高于20亿。 我们看到一个列表可以包含大量的项目。我假设编译器不只是为List的每个新实现释放20亿倍于T的空间,那么列表如何动态增长呢?它是否有指向内存中非连续空格的 ..
发布时间:2022-05-23 13:41:24 C#/.NET

没有虚拟析构函数可能存在内存泄漏?

#include 使用命名空间标准;类基{诠释一个;上市:基数(){a =0;}};类derv:公共基础{诠释 b;上市:derv() {b =1;}};主函数(){基础 *pb = new derv();删除铅;} 我在derv 类中没有虚拟析构函数,它只删除derv 对象的基础部分吗? 解决方案 可能会. 因为 base 没有虚拟析构函数,所以您的代码会表现 ..

`malloc()` 刚刚分配的内存的内容是什么?

我很好奇在 malloc() 用于分配内存空间之后,指针究竟是什么?手册页告诉我 calloc() 将分配的内存空间初始化为零. malloc() 函数分配 size 字节并返回一个指向已分配内存的指针.内存未初始化.如果 size 为 0,则 malloc() 返回 NULL,或稍后可以成功传递给 free() 的唯一指针值. 和 calloc() 函数为每个大小字节的 nme ..
发布时间:2022-01-18 23:50:16 其他开发

CUDA 在 __device__ 函数中分配内存

CUDA 有没有办法在设备端函数中动态分配内存?我找不到任何这样做的例子. 来自 CUDA C 编程手册: B.15 动态全局内存分配 void* malloc(size_t size);无效自由(无效* ptr); 从全局内存中的固定大小堆动态分配和释放内存. 内核中的 CUDA malloc() 函数从设备堆中分配至少 size 个字节,并返回一个指向已分配内存的指针,如 ..
发布时间:2022-01-10 15:49:33 其他开发