将设置值发布到十克指针
Issue settings value to deque pointer
#include <iostream>
#include <string.h>
#include <deque>
using namespace std;
void insertValues(deque<float*> mydeque)
{
*mydeque.at(0)=12;
}
void initArray(deque<float*> mydeque, float* values)
{
for(int i=0;i<3;i++)
mydeque.push_back(values+i);
}
int main ()
{
float values[3];
deque<float*> mydeque;
initArray(mydeque,values);
insertValues(mydeque); //Gives out of range - memory error
cout<<values<<" "<<values+1<<" " <<values[0]<<endl;
values[0]=5;
cout<<values<<" "<<values+1<<" " <<values[0]<<endl;
getchar();
return 0;
}
在上面的代码中,我在调用 insertValues() 函数时遇到了内存问题,它给出了超出范围的错误,但我不知道为什么会发生这种情况,因为 deque 具有我验证的正确地址。
我哪里出错了?
你的问题就在这里。
void initArray(deque<float*> mydeque, float* values)
{
for(int i=0;i<3;i++)
mydeque.push_back(values+i);
}
mydeque
将是你通过的任何内容的副本,mydeque
被填充并随后被销毁。最初传递的参数保持不变。修改它以通过引用获取参数...
void initArray(deque<float*>& mydeque, float* values)
{
for(int i=0;i<3;i++)
mydeque.push_back(new float(values+i);
}
虽然您的代码将按原样工作,但您不应使用指向float
的指针std::deque
。它的方式太脆弱了,在时间和记忆方面表现不佳。更喜欢按值使用整型类型。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将字符指针中的十六进制转换为十进制
- 直接为浮点变量分配十六进制整数与通过指针转换分配之间的区别
- USACO 牛障碍赛:迪尼克的算法/对指针未注册的更改
- C++如何从文件中读取十六进制字节并将其存储为指针
- 字符串十六进制到指针获取值
- 分配给指针的马洛克
- 指针的提升序列化保存指针的十六进制值,而不是对象的内容
- 我可以将指针地址(即十六进制整数)转换为C 中的十进制和八分位基础
- C++:指针的十六进制值相对于什么?
- 将设置值发布到十克指针
- 指针地址给出的是1,而不是十六进制地址
- 十六进制数字系统中的指针值
- 在不同实例中,十六进制值通过字符指针使用不同的填充进行打印
- 马洛克和自由多个指针
- 我如何从ASCII转换到十六进制值,也增加char指针
- 十六进制<< setw() << setfill() 不适用于指针值输出
- 如何从二进制标准的指针创建具有十六进制信息(作为char)的文件
- 为什么在函数指针或返回函数指针的函数编译前放上几十个*呢?