为 C++ + OpenGL + QT 分配阵列

Allocating arrays for C++ + OpenGL + QT

本文关键字:分配 阵列 QT OpenGL C++      更新时间:2023-10-16

我在QT + C++ + OpenGL项目中遇到了问题。主要问题是我需要使用 QText 区域来接收数组中的单元格数量,但我没有成功。事实是,由于数组是在项目开始运行的那一刻创建的,我需要重新调整它的大小,然后使用它......在使用 free() 后,我已经尝试使用 realloc(为我的数组重新分配更多内存),但是当我尝试这样做时,我的结果要么是意外的执行关闭,要么是很多疯狂的情节......我真正需要知道的是我是否可以将 TextArea 中的内容传递给我的类 CPonto(其中包含数组)然后构建数组,或者我是否应该使用 CPonto::reassign like 然后 realloc 或 free()+calloc()/malloc 数组来启动事情......我知道这有点复杂,但我也不明白我的问题,我认为免费+malloc/calloc会起作用......

正确的C++代码不应该使用C风格的内存分配(malloc()free()realloc()等)。相反,只需将可调整大小的数组存储为标准C++可调整大小的数组 - 一个std::vector。或者,如果你更喜欢Qt容器,QVector(但我个人更喜欢任何一天std容器)。

无论如何,为了解决您的realloc()问题本身:顾名思义(和文档指定),realloc()重新分配内存。这意味着它必须首先接收有效内存。所以你称realloc()而不是free(),而不是在它之后

你可以对数组使用指针定义!假设你有一个整数数组喜欢

`int myarray[10];`

您可以使用:

`int * myarray; //in the init
.....
have your data from textbox and put it in N 
....
myarray = new int(N);
....`

并像普通数组一样使用 myarrayl