Pointer v C++

Pavel Hudeček edizon na seznam.cz
Pondělí Prosinec 12 11:25:07 CET 2022


Dobrý den všem,
mějme funkci:
int maskDevAuto1(unsigned di, unsigned run, double time, unsigned short 
limit, unsigned char *mask, int *maskedCnt) {
     ...
     maskedCnt[0] = 0;
     ...
     for (n = 0; n < ...
        ...
        if (mask[n] == PXC_PIXEL_MASKED) maskedCnt[0]++;
     }
     ...
     printf("maskDevAuto1: %d: time %.3f, limit %d, run %d, masked 
%d\n", di, time, limit, run, maskedCnt[0]);
     return 0;
}

a ta je volaná z:

int maskDevAuto(unsigned di, unsigned short limit) {
     ...
     int maskedCnt = 0;
     ...
     for (run = 0; run < 10; run++) {
         rc = maskDevAuto1(di, run, times[run], 100, masks[di], &maskedCnt);
         ...
     }
}

Takhle to funguje. Proč to ale nefunguje, pokud místo maskedCnt[0] dám 
*maskedCnt?
Umře buď ten if, nebo printf. Případně neumře, ale ten printf napíše 
hausnumero, klidně třeba záporný.

Poznámky:
masks a times jsou globální pole.
maskDevAuto je volána z další funkce a ta je ve for cyklu spuštěna v 
několika threadech s různým di.

Díky,
PH



Další informace o konferenci Hw-list