I'm sorry, I misread your code. I tried on 2.4.20, libc 2.3.1, gcc 3.2.2 and the code works fine. However, I also tried on 2.2.19, libc 2.2.3, gcc 2.95.3 and the second call failed. It seems to be a glibc problem, but replacing posix_memalign() with the older memalign() to solves the problem. On Thursday 14 August 2003 14:06, Mihnea Balta wrote: > From the man page: > > ERRORS > EINVAL The alignment parameter was not a power of two, or was not a > multiple of sizeof(void *). > > ENOMEM There was insufficient memory to fulfill the allocation > request. > > NOTES > posix_memalign() verifies that alignment matches the requirements > detailed above. memalign() may not check that the boundary parameter is > correct. > > On Thursday 14 August 2003 16:42, Kimmo Fredriksson wrote: > > Hi, > > > > I'm having troubles with posix_memalign. The following works OK: > > > > > > int r; > > void *p; > > > > r = posix_memalign( &p, 16, 65536 ); > > if( r ) fprintf( stderr, "%s\n", strerror( r )); > > > > But e.g. this fails: > > > > r = posix_memalign( &p, 16, 65 ); > > if( r ) fprintf( stderr, "%s\n", strerror( r )); > > > > i.e. it outputs: Invalid argument > > > > Why? It seems that the number of bytes (the last parameter) is "invalid". > > This happens with at least gcc 2.96 and gcc 3.3.1. > > > > My system is Linux 2.4.18 / RH8.0. > > > > kf > > > > > > --------------------------------------------------------------- > > Acasa.ro vine cu albumele, tu vino doar cu pozele ;) > > http://poze.acasa.ro/ > > --------------------------------------------------------------- > Acasa.ro vine cu albumele, tu vino doar cu pozele ;) > http://poze.acasa.ro/