C++无效指针
C++ void pointer
我正在使用HDF5库从c++中的HDF5文件读取数据,我遇到的问题如下:
status = H5Dread(
hdf5_dataset,
hdf5_datatype,
hdf5_dataspace_in_memory,
hdf5_dataspace_in_file,
H5P_DEFAULT,
buf
);
最后一个参数应该是一个空指针,我有一个浮点向量,我想被分配,但是当我试图传递向量g++时,会出现以下错误:
错误:对于参数
‘6’
到‘herr_t H5Dread(hid_t, hid_t, hid_t, hid_t, hid_t, void*)’
,无法将‘std::vector<float, std::allocator<float> >’
转换为‘void*’
有没有什么方法可以直接写入向量,而不必分配两次内存?
由于std::vector
保证数据存储在连续内存中,因此可以将矢量转换为指针,如下所示:
std::vector<float> myFloats;
void *ptr = static_cast<void*>(&myFloats[0]); // or &myFloats.front()
编辑:如果您在不调用push_back
的情况下写入,请首先确保resize
有足够的空间!
给定一个std::vector<float>
,您可以获得一个指向float
s的连续缓冲区的指针,因此:
std::vector<float> v;
fillMyVectorSomehow(v);
float* buffer = &v[0]; // <---
您可以将其投射到void*
并将其传递出去。
相关文章:
- 在 C++ 中传递字符串时指针无效
- free():仅在一种情况下指针无效
- free():实现矢量擦除()时的指针无效
- free():添加字符串时指针无效
- C++ ecliipse free():函数末尾的指针无效
- C++ 指针无效函数问题
- 将 boost::object_pool 与矢量一起使用时指针无效
- free():矢量 C++ 的指针无效<vec4i>
- omnet++free():指针无效,错误134/139
- 在OpenCV中调用stereoRectify会导致异常:帧指针无效
- 销毁和重新创建一个对象会使指向该对象的所有指针无效吗
- 用户定义类中的Null指针无效
- 删除指向类的指针无效
- 运行GTest时指针无效
- C++错误消息:指针无效
- 可以std::string reconfiguration使指向堆的指针无效
- 为什么删除指向指针向量的指针会导致指针无效
- MPI_scatter:缓冲区指针无效
- mmap 错误:分段错误/指针无效错误
- 返回 std::string 时指针无效(libc 如此说)