我在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