#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有正確的我驗證的地址。問題設置值deque指針
我哪裏錯了?
爲什麼你有'deque'而不是'deque '?爲什麼使用指針?看起來你有意在你的代碼中引發問題。 –
PaulMcKenzie
在我的情況下,我處理的值被其他函數或線程修改,所以不知道除了使用指針指向float之外還有什麼別的辦法。 (上面的代碼只是我在實際實現主代碼庫中的功能之前嘗試的一個示例。) –