【发布时间】:2016-04-27 01:03:45
【问题描述】:
#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<float*>而不是deque<float>?为什么要使用指针?看起来您是故意试图导致代码出现问题。 -
在我的例子中,我处理的值被其他函数或线程修改了,所以不知道除了使用指针浮动之外还能做什么。 (上面的代码只是我在主代码库中实际实现功能之前尝试的示例。)