注:CはMicrosoft Cコンパイラです。callocを使用した後のCアクセス違反
私は、次のコードに問題を抱えています。
*Roomsize = (int*)calloc(sizeof(int),sched->numberOfRooms);
roomIndex = 0;
for(roomIndex=0; roomIndex< sched->numberOfRooms; roomIndex++)
{
fscanf(inputFile,"%d",&lineInput);
numberOfLinesRead++;
*Roomsize[roomIndex] = lineInput;
}
これは別のCファイルです。私はこれらの問題を抱えていないので、保守性を高めるために物を分けることにしました。私はちょっとした指針を混ぜてしまっていると思います。
のcallocが正常に動作します。ループの最初の反復で
は、roomIndexの要素ゼロが正しく設定されます。
ただしループの2番目の要素(要素1)は、常に実行時にアクセス違反が生じます。
私は2次元配列で、あまりにも、後で私のコードでは、この問題に遭遇し、私はそれがまったく同じ問題です考え出すことだし、これだけの最も単純なケースです。
ここに最初の要素以外は何も設定できないように見えるのは誰にでも分かりますか?
それがうまくいった!括弧は実際に何を意味していますか? – RekrowYnapmoc
あなたの前提は正しいです。 – RekrowYnapmoc
括弧は、通常の配列アクセス演算子です。操作の順序に従って、配列アクセスはポインタ参照解除の前に行われます。 –