- 1 : 2022/02/28(月) 11:56:32.313 ID:GvEe6aeb0
- double* data = new double[1500];
float length = 400;
float* a = new float[length];
int center = length / 2;
float* p = a + center – 10;コンパイル時にエラーは出ないんだけど
実行すると落ちるって状態で
この部分の最後の行をコメントアウトすると落ちなくなる - 2 : 2022/02/28(月) 11:56:53.235 ID:GvEe6aeb0
- 正直ポインタが未だに理解できてない
- 3 : 2022/02/28(月) 11:57:44.876 ID:sLhpLXIb6
- pってどこの領域指してるの?
- 6 : 2022/02/28(月) 11:58:39.582 ID:GvEe6aeb0
- >>3
領域がなんなのかもよくわからない - 4 : 2022/02/28(月) 11:58:07.720 ID:GvEe6aeb0
- 毎回落ちるってわけじゃなく
落ちるときと落ちないときがある落ちるときは必ず落ちるんだけど
全く内容を変えずにビルドし直すと落ちなくなったりしてよくわからない - 5 : 2022/02/28(月) 11:58:21.319 ID:bGE1rhuh0
- 実行したけど落ちない
お前の環境が悪いんじゃね
- 7 : 2022/02/28(月) 11:59:07.603 ID:sLhpLXIb6
- あああっているのか
- 8 : 2022/02/28(月) 12:00:14.089 ID:WYq19Bpd0
- 何語?
- 13 : 2022/02/28(月) 12:02:37.078 ID:GvEe6aeb0
- >>8
c++ - 9 : 2022/02/28(月) 12:00:43.984 ID:Ug+HFOvm0
- ああここが狂ってる
float length = 400;
float* a = new float[length];直しとけ
- 11 : 2022/02/28(月) 12:01:30.914 ID:GvEe6aeb0
- >>9
何がおかしいの? - 14 : 2022/02/28(月) 12:07:43.390 ID:ls5w+3j90
- >>11
変数を0.5個確保とかできないから添え字は絶対に整数 - 10 : 2022/02/28(月) 12:00:45.835 ID:GvEe6aeb0
- for (int i = 0; i < 1500; ++i, ++p){}
ごめん
これが抜けてた
forの中身を全部コメントアウトしても変わらないから
pを増やしていくと落ちることがあるって感じだと思う - 12 : 2022/02/28(月) 12:02:33.589 ID:sLhpLXIb6
- >>10
400個しか無いところに何やってるの? - 15 : 2022/02/28(月) 12:07:47.269 ID:GvEe6aeb0
- >>12
超えたらまずいの? - 19 : 2022/02/28(月) 12:09:52.386 ID:sLhpLXIb6
- >>15
まずく無いかもね - 40 : 2022/02/28(月) 12:25:17.406 ID:4ybK8Dfdd
- >>15
セグメンテーションフォルトが出るやろ - 16 : 2022/02/28(月) 12:08:07.593 ID:7ZTz2m3g0
- for (int i = 0; i < 1500; ++i, ++p){
printf("%c%c%c%c\n",0x55,0x6e,0x6b,0x6f);
}これかな
- 17 : 2022/02/28(月) 12:08:56.149 ID:ls5w+3j90
- あと a は配列だから a + ホニャララ もできない
- 20 : 2022/02/28(月) 12:12:05.588 ID:J96tYHoka
- >>17
え、最近のC++ってポインタへの加算できなくなったの? - 21 : 2022/02/28(月) 12:14:23.302 ID:sLhpLXIb6
- >>17
aは配列じゃないから変更可能 - 18 : 2022/02/28(月) 12:09:10.292 ID:F+qAquqv0
- pが190番目くらいからスタートしてるでしょ
それをforループで1500回回したら401番目から先はバッファオーバーランになるじゃん
forループの中でiをprintしてみ
途中で落ちるから - 26 : 2022/02/28(月) 12:18:08.484 ID:ucqDwkIta
- >>18の言ってることを理解しようぜ
これが問題の本質だから - 22 : 2022/02/28(月) 12:14:40.120 ID:Xeo2lxBF0
- まず配列でなんで要素数がfloat
- 23 : 2022/02/28(月) 12:16:17.784 ID:GvEe6aeb0
- if( sizeof(p) / sizeof(int) >1500){
for (int i = 0; i < 1500; ++i, ++p){}
else{
for (int i = 0; i < sizeof(p) / sizeof(int); ++i, ++p){}
}}こうすれば大丈夫かな?
- 31 : 2022/02/28(月) 12:18:37.944 ID:sLhpLXIb6
- >>23
pは配列じゃなくてポインタで定義してるから、sizeof(p)は配列バイト数じゃなくてsizeof(float*)の4とか8とかが返る - 32 : 2022/02/28(月) 12:20:28.470 ID:GvEe6aeb0
- >>31
配列の数を調べるにはどうすればいいの? - 33 : 2022/02/28(月) 12:21:32.396 ID:sLhpLXIb6
- >>32
別に領域オーバーしても動く処理系なんだから気にしなくていいんじゃないの? - 34 : 2022/02/28(月) 12:23:12.884 ID:GvEe6aeb0
- >>33
落ちる原因は別にあるってこと? - 38 : 2022/02/28(月) 12:24:41.611 ID:fVp5obC70
- >>32
調べるもクソも自分が固定長で宣言してるじゃねぇか! - 24 : 2022/02/28(月) 12:17:32.204 ID:GvEe6aeb0
- 駄目だ
落ちた - 25 : 2022/02/28(月) 12:17:46.206 ID:fVp5obC70
- バカじゃねぇの
確保してるメモリ確実に超えるじゃん
何がしたいのかも分からないし
まずは基礎を理解してから質問しろよ - 27 : 2022/02/28(月) 12:18:11.728 ID:J96tYHoka
- まずdouble* dataが使われてないことに気付いてほしい
- 28 : 2022/02/28(月) 12:18:19.669 ID:Ug+HFOvm0
- よくわかんねーけど
float length = 400;をintにすれば良いんじゃねえの - 29 : 2022/02/28(月) 12:18:24.871 ID:l43BIxy4d
- ネタな気がしてきて
- 30 : 2022/02/28(月) 12:18:27.238 ID:HIe+k757a
- 俺Python使い、意味不明
- 35 : 2022/02/28(月) 12:23:55.749 ID:4ybK8Dfdd
- centerはint型なのにfloatに足していいの?
浮動小数点数型と整数型じゃ値の保持方法全く違うよ - 36 : 2022/02/28(月) 12:24:10.886 ID:1guKYhgl0
- c++難しいからJavaかPythonやろうぜ(ベストアンサー)
コメント