【发布时间】:2015-04-10 09:54:29
【问题描述】:
我有一个结构数据
struct dataStruct{
int mID;
float mX;
};
一个fillData方法
void fillData(data *pt)
{
pt = new data(10);
}
和main函数
int main(int argc, char** argv)
{
dataStruct *myData;
fillData(myData);
myData[4].mID = 10;
std::cout << myData[4].mID << " " << myData[5].mID << std::endl;
}
还有几个问题:
- 如何在 fillData 方法中分配 myData 以使分配不是 fillData 的本地分配?
- myData 的大小是否可以通过以后调用 fillData 来增加,从而将大小从 10 更改为 100?
- 使用 std::unique_ptr 管理 dataStruct 指针会更好吗?
【问题讨论】:
-
使用指针参数的引用:
void fillData(data*& pt) -
对于 C++ 问题,这是非常 C 的。使用例如
std::vector完成。 -
"如何分配结构然后增加它的大小?" 你不能在运行时增加结构的大小。
-
在需要重新分配时使用 malloc 和 realloc
-
你的意思可能是
void fillData(data*& pt) { pt = new data[10]; }?
标签: c++ memory struct new-operator