malloc関数で確保した構造体に対して
p->x+cos(p->Angle+PI)*(p->Length/2)+cos(p->Angle+PI/2)*(p->Width/2);
のような処理を行うと強制終了してしまいます
float x1=cos(p->Angle+PI)*(p->Length/2);
float x2=cos(p->Angle+PI/2)*(p->Width/2);
p->x+x1+x2;
のように分けたりすると大丈夫なのですが・・
何か思い当たる事はないでしょうか?
C++ DXライブラリを使用しています
メンバの間接参照について
Re:メンバの間接参照について
> p->x+cos(p->Angle+PI)*(p->Length/2)+cos(p->Angle+PI/2)*(p->Width/2);
>
> のような処理を行うと強制終了してしまいます
強制終了してしまうプログラムのソースコードすべてを載せていただけますか?
ところで、
> p->x+cos(p->Angle+PI)*(p->Length/2)+cos(p->Angle+PI/2)*(p->Width/2);
も、分割した
> p->x+x1+x2;
これも、演算結果をどこにも代入していません。それでよいのでしょうか?
本題と直接関係はありませんが、気になります。
>
> のような処理を行うと強制終了してしまいます
強制終了してしまうプログラムのソースコードすべてを載せていただけますか?
ところで、
> p->x+cos(p->Angle+PI)*(p->Length/2)+cos(p->Angle+PI/2)*(p->Width/2);
も、分割した
> p->x+x1+x2;
これも、演算結果をどこにも代入していません。それでよいのでしょうか?
本題と直接関係はありませんが、気になります。
Re:メンバの間接参照について
ソースコードは約1万行あるので全部乗せるのは無理でしょうね・・
肝心な部分だけ抜き出してみましょうかね・・
代入を行っていないのは、代入するから強制終了するのか、式に問題があるのかを判断するためです
どうも式に問題があるようですね・・
肝心な部分だけ抜き出してみましょうかね・・
代入を行っていないのは、代入するから強制終了するのか、式に問題があるのかを判断するためです
どうも式に問題があるようですね・・
Re:メンバの間接参照について
ん?ブレイクポイントとは何でしょうか?
値を確認する前に怪しい所をコメントアウトしてみたら
なぜかmalloc関数で確保したVERTEX構造体配列
Vertex[i*6+3]とVertex[i*6+1]の一部のメンバに値を代入すると強制終了しました
他は大丈夫みたいなんですけど・・
値を確認する前に怪しい所をコメントアウトしてみたら
なぜかmalloc関数で確保したVERTEX構造体配列
Vertex[i*6+3]とVertex[i*6+1]の一部のメンバに値を代入すると強制終了しました
他は大丈夫みたいなんですけど・・
Re:メンバの間接参照について
調べてみるとBorlandの場合は別にソフトが必要のようですね
私の場合は先輩の環境をコピーしたのでBorlandが展開されている場所もわからないし
以前によくわからないまま同じような事をやった時に開発環境が異常を起こした事があったので
パッと導入するのは無理ですね・・
あと何でか分からないんですが
malloc宣言部
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*(abs(P->DrawType)==1)?Unit:Sum));を
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*1000);に変更すると見た感じうまく行きました
もしかしたら領域確保に失敗してるのかもしれません
なぜかVERTEX Vertex[1000];ではうまく行きませんでしたが・・
私の場合は先輩の環境をコピーしたのでBorlandが展開されている場所もわからないし
以前によくわからないまま同じような事をやった時に開発環境が異常を起こした事があったので
パッと導入するのは無理ですね・・
あと何でか分からないんですが
malloc宣言部
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*(abs(P->DrawType)==1)?Unit:Sum));を
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*1000);に変更すると見た感じうまく行きました
もしかしたら領域確保に失敗してるのかもしれません
なぜかVERTEX Vertex[1000];ではうまく行きませんでしたが・・
Re:メンバの間接参照について
さらに試行錯誤すると
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*(abs(P->DrawType)==1)?Unit:Sum));を
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*((abs(P->DrawType)==1)?Unit:Sum)));に変えると
うまく動きました
条件演算子の優先度が原因だったのでしょうか・・
見たところ問題解決したようなので
もう少し試行錯誤して強制終了しないか調べてみます
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*(abs(P->DrawType)==1)?Unit:Sum));を
VERTEX *Vertex=(VERTEX*)malloc(sizeof(VERTEX)*(6*((abs(P->DrawType)==1)?Unit:Sum)));に変えると
うまく動きました
条件演算子の優先度が原因だったのでしょうか・・
見たところ問題解決したようなので
もう少し試行錯誤して強制終了しないか調べてみます