dynamic-memory-allocation相关内容

在堆栈上使用realloc()

我正在写一些简单的Stack操作,其数据结构是一个数组. #define DEFAULT_VAL 10//在单独的头文件中int *堆栈=(int *)malloc(default_size * sizeof(int)); 目标是编写一个函数来动态设置Stack的大小,同时确保不丢失元素. 这是我到目前为止所拥有的: void Sizer(int size){#undef DEF ..
发布时间:2021-05-03 19:05:17 其他开发

如何创建二维数组

我仍然是C编程的初学者,我需要一些帮助来为我的C编程类编写代码.提示是:该程序的输入是位于名为textfile94的文件中的浮点数据的二维数组.输入数组将包含3行数据,每行包含5列数据的行. 我希望您使用动态内存分配的两个下标方法. 使用malloc创建一个保存指针的数组. 该数组的每个元素都指向另一个数组,即行数据. 在循环中使用malloc创建行. 然后,您可以使用两个下标运算符 ..
发布时间:2021-05-03 19:05:14 其他开发

传递char未初始化的指针地址以及成员变量的分配和提取

我正在将 char * 指针从main传递到函数 abc ,该函数是未初始化的指针.我正在组成一个网络数据包,就像在功能中分配的那样,我希望它是数据包的表示形式.所以这是我在 main 内部的函数调用中传递未初始化的指针 char * pay;abc(& pay); 在我具有的功能中,如下所示的功能 void abc(字符** c) 这是全部功能 void abc(字符** ..
发布时间:2021-05-03 19:05:08 其他开发

c为什么重新分配不起作用

我有以下代码 void getPariceArray(板卡,treeNode * tn,位置* dst,int **价格,int *计数器,int total){如果(tn == NULL)返回NULL;if(tn-> position [0] == dst [0] [0]& tn-> position [1] == dst [0] [1]){prices =(int **)realloc(p ..
发布时间:2021-05-03 19:05:04 其他开发

C ++流如何为输入分配空间?

例如: //是类型:std :: istream//str类型:std :: string是>>str; 它如何增长 str 以适应输入?它逐个字符地读取并调用 str.push_back()(或类似方法)?还是有一种在读取输入之前就知道输入大小的机制? 我意识到该标准很可能未指定此详细信息,但我对常见的实现方式(例如 gcc )更感兴趣. 这个问题是一个好奇,因为在C语言中,您 ..
发布时间:2021-05-03 19:04:55 C/C++开发

在C中声明一个指向结构的指针的数组,但直到需要时才为结构分配内存

我正在尝试为C中名为 base 的结构的 n 个指针数组分配空间.我不想为一个结构分配空间.除非需要. 如果在用户会话期间需要多个 n 个结构,那么我将 realloc 另一组n个指针. 请告诉我这是声明它们的正确方法,不包括任何重新分配吗? 我问的一个原因是,我不明白为什么 printf(“%d",sizeof(ptr [0]))返回 sizeof(base)在尚未分配任何内存 ..
发布时间:2021-05-03 19:04:52 其他开发

C-比较来自不同分配的指针?

我在C语言中实现了AVL树.直到后来我才读到指针比较仅在同一数组中的对象之间有效.在我的实现中,我进行了某些相等性测试.例如,为了测试节点是否是父节点的右子节点,我可以测试 node == node-> parent-> right .但是,节点是根据需要分配的,而不是连续的块.是否定义了此行为?如果不是,您将如何编写此代码? 解决方案 对于平等和不平等,在标准(ISO/IEC 9899: ..
发布时间:2021-05-03 19:04:49 其他开发

是否可以以不导致UB的方式分配未初始化的数组?

在C ++中实现某些数据结构时,需要能够创建一个具有未初始化元素的数组.因此,拥有 buffer =新的T [容量]; 不适合,因为 new T [capacity] 会初始化数组元素,这并非总是可能的(如果T没有默认构造函数)或期望的(因为构造对象可能需要时间).典型的解决方案是分配内存并使用new放置. 为此,如果我们知道元素的数目是已知的(或者至少我们有一个上限)并且在堆栈上进 ..

在C ++ 14中new和delete仍然有用吗?

考虑到 make_unique 和 make_shared 的可用性,以及 unique_ptr 和 shared_ptr 析构函数的自动删除功能,在C ++ 14中使用 new 和 delete 的情况(除了支持旧版代码的情况)是什么? 解决方案 尽管在许多情况下,智能指针优于原始指针,但 new /仍然有很多用例在C ++ 14中删除. 如果您需要编写任何需要就地构建的内容,例如 ..
发布时间:2021-05-03 19:04:40 C/C++开发

C#中锯齿状数组的内存分配与C ++中2D数组的内存分配

我对C#中的锯齿状数组有一个疑问,因为我在互联网上的某个地方读到有关锯齿状数组的问题,我认为C#中2d锯齿状数组的内存分配与C ++中2d数组的内存分配相同,因为2d锯齿状数组具有一个指针数组,每个指针都指向一个元素数组(例如整数元素),我的意思是在C ++中该数组的内存分配如下: int ** twoDArr {new int * [number1]};为(int i = 0; i ..
发布时间:2021-05-03 19:04:35 C#/.NET

我可以删除以前动态分配但具有不同指针的内存吗?

我正在用C ++编写一个用于链表的程序.为了实现这一概念,我在全局创建了一个指针"start",指向列表的第一个元素. 程序完成后,我尝试通过使用start和另一个本地声明的指针"p"访问连续的节点,来删除动态分配的所有内存,以防止内存泄漏.在这里,我使用了一个指向相同正确地址的指针,但是该指针不是用于内存分配的指针,而是像任何普通指针一样在本地声明. 我的问题是-是否可以通过使用指向 ..

如果std :: vector :: resize的size参数等于当前大小怎么办?

阅读有关vector :: resize “> http://www.cplusplus的手册.com/reference/vector/vector/resize/ 它只说大小大于或等于小会发生什么,但不说大小相等会发生什么.是否保证在相等大小下不会重新分配数组并使迭代器无效? 我想避免一个分支并且只处理2种情况(> =或或==),但是如果未调整大小到相同大 ..
发布时间:2021-04-24 19:30:27 C/C++开发

在函数C ++中分配内存2D数组

我正在尝试为C ++中的函数内部的2D数组动态分配内存.除了使用malloc和dealloc编写它之外,已经提出了一个完全像这样的问题,所以我想知道您是否可以帮助我将其转换为使用new和delete.这是另一个问题: 在函数C中分配内存2d数组 我尝试将其更改为以下代码,但出现错误. void Assign_memory_for_board(int ROWS,int COLS,in ..

如何创建一个数组并开始其生命周期而又不开始其任何元素的生命周期?

任何类型的数组都是隐式生命周期对象,并且可以从隐式生命周期对象的生命周期开始,而无需开始子对象的生存期. 据我所知,创建隐式生命周期对象的动机之一是创建数组而不以不导致UB的方式开始其元素生命周期的可能性,请参阅 示例2. T * allocate_array(std :: size_t n){//malloc隐式构造-reinterpet_cast应该指向的指针//适当创建的对象 ..
发布时间:2021-04-09 20:31:25 C/C++开发

Fortran子例程中的数组分配

我的问题是有关Fortran中的数组分配. 我有一个子程序,例如 readParams ,我想从文件中读取一些动态大小的数组.这些也可在子例程外部使用.处理此问题的最佳方法是什么? 在F95中,似乎不可能在子例程中进行分配,并将填充了值的数组传递回主程序.但是,如果我在主程序中分配它并在子例程中使用"intent(inout)",它也将被释放. (我在这里使用的是F90/95,但 ..
发布时间:2021-04-09 20:31:22 其他开发

三法则运动出乎意料的结果

我尝试在业余时间学习C ++基础并按照书中的练习进行学习。首先,当我输入9作为行,输入8作为列时,我得到了malloc释放错误。其次,我的输出为0,看不到输入的内容。我想编写该程序,因为我可以加强三个规则。当然不是功课。此外,我认为这是一个困难的问题和有效的问题。如果问题可以得到解答,将很有帮助。因为我已经在Google上进行搜索,所以找不到关于解决方案的正当做法。另外,您可以检查我的复制构造函数 ..
发布时间:2020-10-27 02:24:49 C/C++开发

程序在malloc附近被击中

我使用了如下代码 char * es_data; fp_input = fopen(inp_path,“ rb”); fseek(fp_input,0,SEEK_END); file_size = ftell(fp_input); fseek(fp_input,0,SEEK_SET); es_data =(char *)malloc(file_size); ..
发布时间:2020-10-27 02:23:42 其他开发