我可以用这种方式将数组转换为指针并返回指向常量的指针吗?
Can I convert an array in such a way to Pointer and return a pointer to a constant?
可以将数组转换为指针并返回指向常量的指针吗?在内存分配方面是否正确?
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;
}
函数的问题是您在函数内分配数组并返回指向它的const
指针。任何一个本身都是好的,但它一起意味着调用代码将获得delete
的const
对象的任务,这是未定义的行为。所以你的例子不太对
相关文章:
- 在 const 函数中通过引用和指针返回之间的区别
- 指向 std::unrodered_map 中元素的指针返回'Read access violation'
- 为什么要为指针返回类型返回一系列字符?
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- 将原始指针返回到智能指针
- 从函数中的指针返回对象,例如链接列表
- 将指针返回使用New创建的数组数组
- 查找并将指针返回向量中的对象
- 函数可以将指针返回其自己的类型
- 指针返回值的地址
- 为什么静态指针返回函数中有一个"静态"键?
- 从弱指针返回类型返回共享指针
- 如何将C++引用和指针返回转换为 C++/CLR
- 从指针返回对象时出现意外的析构函数调用
- 阵列指针返回垃圾
- (C )当在同一类中调用时,污点指针返回正确的值,而从MAIN调用时为0
- C 从指针返回到成员功能
- 在构造函数以外的任何其他位置访问相机时,我的相机指针返回 null
- 从取消引用的指针返回原始指针
- 指针返回