Iは、mallocを使用して、それらにベクター画像のいくつかの値を割り当てる(MATR、matG、MATB)は、3つの行列を割り当てています。 いつものように、私はこの仕事のためのループを作るために2つの整数(i、j)を使っています。最初にi = 0、j = 0とすると、197にmatR [0] [0]を、matG [0] [0]に211を、matB [0] [0]に219を代入します。今まではOKです。それらは私が望む価値です。しかし、ここでは奇妙な振る舞いが起こります:いくつかの点で新しい値がmatR [0] [0]、matG [0] [0]、matB [0] [0]に割り当てられます!奇妙な行動マトリックス(C/C++)に値を割り当てる
これは私が言ったことをやっているコードの一部です:
int i, j, k;
std::vector<unsigned char> image; //the raw pixels
unsigned error = lodepng::decode(image, width, height, filename);
matR = (unsigned char**)malloc(sizeof(unsigned char)*width);
matG = (unsigned char**)malloc(sizeof(unsigned char)*width);
matB = (unsigned char**)malloc(sizeof(unsigned char)*width);
k=0;
for(i=0; i<width; i++) {
matR[i] = (unsigned char*)malloc(sizeof(unsigned char)*height);
matG[i] = (unsigned char*)malloc(sizeof(unsigned char)*height);
matB[i] = (unsigned char*)malloc(sizeof(unsigned char)*height);
for(j=0; j<height; j++) {
matR[i][j] = image[k++];
matG[i][j] = image[k++];
matB[i][j] = image[k++];
k++; //separator
}
私は、コードをdebbugするいくつかの行を追加して、端末上で実行されている、私は次の出力を得た: http://imgur.com/XvQIGYk
* i = 100、j = 0のとき、matR [0] [0]の値が176に変更されたことを示します。
何が起こっていますか?