Re: is strlen()'s read-4-bytes-ahead a standard?
Dag-Erling Sm=F8rgrav <des@des.no> writes:
> Xin LI <delphij@delphij.net> writes:
>> deeptech71@gmail.com writes:
>> > Some C implementations use the read-4-bytes-ahead technique to speed
>> > up strlen(). Does the C standard state anything about strlen() being
>> > allowed to read past the terminating zero?
>> It's not 4-bytes-ahead, but read a whole (aligned) word at one time.
>> I think C standard does not dictate in this detail.
>
> My guess is that it invokes undefined behavior, but it doesn't matter in
> practice, because as long as you only read one aligned word at a time,
> and as long as the pointer you got is valid and points to a properly
> terminated string, you might read trash (which is expected), but you
> will never read unmapped memory.
strlen() is part of the implementation, and doesn't have to worry about
undefined behaviour. Any conforming *program* will work properly, and
that's all the standard library needs to ensure.
_______________________________________________
freebsd-chat@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-chat
To unsubscribe, send any mail to "freebsd-chat-unsubscribe@freebsd.org"
討論串 (同標題文章)
完整討論串 (本文為第 8 之 8 篇):