从向量到空指针的 memcpy(反之亦然)不起作用
memcpy from a vector to void pointer (vice-versa) not working
这是具有 2 个变量的结构节点。
typedef struct{
int a;
int b;
}node;
将值插入到节点类型的向量中。
vector <node> nv;
node n;
n.a = 10;
n.b = 20;
nv.push_back(n);
n.a = 100;
n.b = 200;
nv.push_back(n);
将向量复制到空指针。
void *ptr = malloc(4096);
memcpy((char*)ptr,&nv,sizeof(node)*2);
从 void 指针读取值
node *temp;
temp = (node*)malloc(sizeof(node));
int offset = 0;
i = 0;
while(i<n){
memcpy((node*)temp,(char*)ptr + offset, sizeof(node));
cout<<"a - "<<temp->a<<" b -"<<temp->b<<endl;
offset += sizeof(node);
i++;
}
我正在打印 a 和 b 的值。但它们不正确并且包含随机数。我确定我击中了错误的内存位置。但不确定在哪里。
std::vector
对象不是数组对象。向量管理动态分配的数组。就像你的ptr
不是一个数组,而只是指向一个数组。
就像你不会将&ptr
传递给malloc
一样(因为这会导致数据被写入指针,而不是尖锐数组(,你也不会传递&nv
(因为这会导致数据从管理数组的向量读取,而不是从正在管理的数组中读取(。Vector 有一个成员函数data
它返回指向内部数组的指针。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 从向量到空指针的 memcpy(反之亦然)不起作用
- 函数A调用函数B,反之亦然(为什么不起作用)