我可以将数组转换为Pointer并返回指向常量的指针吗?在内存分配方面是对的吗?
const int* convert_vector_to_pointer(std::vector<std::pair<int, int> >& v)
{
std::vector<std::pair<int, int> >::iterator it = v.begin();
int* a = new int[2*v.size()];
int i = 0;
for(; it != v.end(); ++it)
{
if(i < 2*v.size())
{
a[i] = (*it).first;
a[i + 1] = (*it).first;
i += 2;
}
}
const int* b = const_cast<const int*>(a);
return b;
}
答案 0 :(得分:1)
你的函数的问题是你在函数中分配数组并返回一个const
指针。任何一个本身都可以,但是它们一起意味着调用代码将被赋予delete
const
对象的任务,并且这是未定义的行为。所以没有你的例子不对。