"header"는 구조체의 개체이며 header.img의 값은 496입니다. 헤더 구조체에는 3 개의 정수 요소가 있으므로 값은 12 바이트입니다. (고려 4 바이트 int)누구든지이 코드 조각을 설명해 주시겠습니까?
double** MatrixBuffers = new double* [header.img];
MatrixBuffers[0] = new double[header.img* 12];
for (unsigned int i=1; i<header.img; ++i) {
MatrixBuffers[i] = MatrixBuffers[0] + i * 12;
}
globaldata.adv_MatrixBuffers = MatrixBuffers;
나는 MatrixBuffers가 496 개의 double에 대한 포인터라는 것을 알고있다. 하지만 두 번째 줄에서 무슨 일이 벌어지고 있는지 이해하지 못합니다.
MatrixBuffers[0] = new double[header.img* 12];
1.이 뜻은 MatrixBuffers [0]은 496 * 12 배로의 포인터입니까? 2. for 루프에서 무슨 일이 일어나고 있습니까? 3. 나중에 코드에서 MatrixBuffer [0]이 함수로 전달됩니다. 이것은 MatrixBuffers [0]에 기본 주소 인 포인터를 전달한다는 것을 의미합니까?
미안 해요에 대해 위의 라인을 코멘트 수, 꽤 이해하지 못했다. 조금만 백업 해 줘. MatrixBuffers가 P [0] ---- P [495]라고하는 496 개의 double에 대한 포인터라고합니다. 이 작업이 실행되면 MatrixBuffers [0] = new double [header.img * 12]; MatrixBuffers [0]은 496 * 12 개의 double에 대한 포인터입니까? K [0] --- K [47520]라고 말하십시오. P [0]이 K [0]을 가리키고 있다는 것을 이해합니다. for 루프에 아래 코드를 작성하고 위 코드에 주석을 달아주는 것과 같은가요? MatrixBuffers [i] = 새로운 Double [12]; 감사합니다. –
예 ... 우리가 할당 한 모든 색인에 대해 12 바이트의 메모리를 할당하거나 할당합니다. 내가 설명했듯이, 당신은 한 번 할당하고 동일한 인덱스를 다른 인덱스에 할당하거나 모든 인덱스에 개별적으로 할당 할 수 있습니다. – Raghuram
따라서 주어진 코드에서 MatrixBuffers [0]에는 496 * 12 배가 메모리가 있습니다. MatrixBuffers [1 to 495]에는 12 바이트의 메모리가 있습니까? –