On 11/22/2011 10:47 PM, Eric Meijer wrote:
Hoi allemaal,
Ik heb een progammeer-probleem en ik weet niet of het een bug is of ik
iets over het over het hoofd zie.
Voor een multi-threaded programma (in C++) wil ik een random number
generator gebruiken. Hiervoor zijn de re-entrant versies van de
random en initstate nodig. Deze probeer ik nu uit met een simpel C
programmaatje:
---- testrand.c ----
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
struct random_data state1;
const size_t bufsz = 256;
char buf1[bufsz];
int32_t r1;
fprintf(stderr, "%d\n", initstate_r(1u, buf1, bufsz, &state1));
random_r(&state1, &r1);
fprintf(stderr, "%d\n", r1);
return 0;
}
----
Hoi,
Zelf het antwoord gevonden hier:
http://www.gammon.com.au/forum/?id=11209&page=999
Het blijkt dat je de struct random_data eerst op 0 moet initialiseren met
memset(&state1, 0, sizeof(state1));
of zo. Het lijkt me een bug in de initstate_r implementatie, en het
staat ook niet manual page.
Misschien dien ik er nog wel een bug over in.
Bedankt voor het meedenken.
Eric
--
To UNSUBSCRIBE, email to debian-user-dutch-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org