Hi, Thanks for your reply. You mean to say i should modify the test as below: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int i; char *buf; size_t size = 1048576 ; buf = malloc(size); for (i = 0; i <= 1048575; i++) buf[i] = 'a'; buf[size]='\0'; printf("The length of buff is : %d\n",strlen(buf)); free(buf); return 0; } I NULL terminated the string buf[size] = '\0' <== The last character is NULL But still i get a SEGV at strlen. Could you please tell me if my changes above are correct? Regards, Channa On 28/01/2009, Harti Brandt <hartmut.brandt_at_dlr.de> wrote: > On Wed, 28 Jan 2009, Channa wrote: > > C>Hi All, > C>I am using jemalloc.c source from FreeBSD-current source. > C>When i allocate 1MB of memory using malloc() and use it as the below > C>test shows > C> > C>#include <stdio.h> > C>#include <stdlib.h> > C>#include <string.h> > C> > C>int main() > C>{ > C> int i; > C> char *buf; > C> size_t size = 1048576 ; > C> > C> buf = malloc(size); > C> for (i = 0; i < 1048576; i++) > C> buf[i] = 'a'; > C> printf("The length of buff is : %d\n",strlen(buf)); > C> free(buf); > C> return 0; > C>} > C> > C>When i try to call strlen(buf) SEGV is recived. > > Would be better to terminate the string with a '\0' so that it is really a > string. > > harti > > C> > C>This behaviour is seen when only for 1MB chunk if i allocate > C>memory lesser than 1MB no issues noticed. > C> > C>Could anyone see similar problem? > C>Is the above test wrong? > C>Or some issue with huge memory allocation in jemalloc? > C> > C>Your response will be very helpful. > C> > C>Thanks & Regards, > C>Channa > C>_______________________________________________ > C>freebsd-current_at_freebsd.org mailing list > C>http://lists.freebsd.org/mailman/listinfo/freebsd-current > C>To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org" > C> > C> >Received on Wed Jan 28 2009 - 11:02:51 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:41 UTC