#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 'がありますか?なぜポインタの使用法ですか?意図的にコードの問題を引き起こそうとしているようです。 –
PaulMcKenzie
私の場合、扱う値は他の関数やスレッドによって変更されるため、ポインタを浮動小数点にする以外に何をするべきかは分かりませんでした。 (上記のコードは、実際にメインコードベースに機能を実装する前に試したサンプルです) –