我试图找到矢量向量的字节大小。我需要这个大小才能用malloc分配一个指针。在我看来,我分配了太多内存,因为当我尝试使用memcpy复制内容时,它会显示“访问冲突读取位置......”。奇怪的是,它只会崩溃一些,即使我不改变代码。有什么东西我不见了吗?
为了完全理解我的问题,这里有一段代码:
struct Node
{
int total;
float threshold;
float value[2];
int child [2];
};
vector<vector<Node>> NodeArray;
NodeArray.resize(100);
for (int i = 0; i < NodeArray.size(); i++)
{
NodeArray[i].resize(20);
}
int ArraySize = sizeof(NodeArray);
for (vector<vector<Node>>::iterator it = NodeArray.begin(); it != NodeArray.end(); ++it)
{
ArraySize += it->size() * sizeof(Node) + sizeof(it);
}
vector<vector<Node>> *NodeArray_d;
NodeArray_d= (vector<vector<Node>>*)malloc(ArraySize);
memcpy (NodeArray_d, &NodeArray, ArraySize);