This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 07/16/2013 03:39 AM, Vasili Galka wrote: > Hi, > > I've been surprised to discover that using sprintf() leads to > requirement of sbrk(). Can anyone please explain me why? > For gods sake, the function already has output buffer provided. The > lifetime of the function is well defined and it has stack. Why would > it require heap!? Computation of %g and friends can require allocation in order to safely convert a power-of-two floating-point number into a power-of-10 string representation (particularly for numbers on the extreme small end, like 1e-300). Even if the final representation fits in the buffer passed into snprintf, the intermediate conversion steps require more bytes than can be safely allocated within a single page of the stack, and as newlib cannot assume a large stack size, it is easier to implement the conversion process using the heap. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |