memset_s(): What does the standard mean with this piece of text? : <p>In C11, K.3.7.4.1 <em>The memset_s function</em>, I found this bit of rather confusing text:</p>

<blockquote>
  <p>Unlike <code>memset</code>, any call to the <code>memset_s</code> function shall be evaluated strictly according to the rules of the abstract machine as described in (5.1.2.3). That is, any call to the <code>memset_s</code> function shall assume that the memory indicated by <code>s</code> and <code>n</code> may be accessible in the future and thus must contain the values indicated by <code>c</code>.</p>
</blockquote>

<p>This implies that <code>memset</code> is <em>not</em> (necessarily) "evaluated strictly according to the rules of the abstract machine". (The chapter referenced is 5.1.2.3 <em>Program execution</em>.)</p>

<p><strong>I fail to understand the leeway the standard gives to <code>memset</code> that is explicitly ruled out here for <code>memset_s</code>, and what that would mean for an implementor of either function.</strong></p>
