{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:10:53Z","timestamp":1750306253556,"version":"3.41.0"},"reference-count":11,"publisher":"Association for Computing Machinery (ACM)","issue":"6","license":[{"start":{"date-parts":[[2016,12,1]],"date-time":"2016-12-01T00:00:00Z","timestamp":1480550400000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Queue"],"published-print":{"date-parts":[[2016,12]]},"abstract":"<jats:p>Most developers understand that reading uninitialized variables in C is a defect, but some do it anyway. What happens when you read uninitialized objects is unsettled in the current version of the C standard (C11).3 Various proposals have been made to resolve these issues in the planned C2X revision of the standard. Consequently, this is a good time to understand existing behaviors as well as proposed revisions to the standard to influence the evolution of the C language. Given that the behavior of uninitialized reads is unsettled in C11, prudence dictates eliminating uninitialized reads from your code.<\/jats:p>","DOI":"10.1145\/3028687.3041020","type":"journal-article","created":{"date-parts":[[2020,9,3]],"date-time":"2020-09-03T04:04:08Z","timestamp":1599105848000},"page":"56-72","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Uninitialized Reads"],"prefix":"10.1145","volume":"14","author":[{"given":"Robert C.","family":"Seacord","sequence":"first","affiliation":[{"name":"NCC Group"}]}],"member":"320","published-online":{"date-parts":[[2016,12]]},"reference":[{"volume":"200","journal-title":"Debian Security Advisory.","first-page":"1571","key":"e_1_2_1_1_1"},{"key":"e_1_2_1_2_1","unstructured":"IEC. 1989. Binary floating-point arithmetic for microprocessor systems (60559:1989).  IEC. 1989. Binary floating-point arithmetic for microprocessor systems (60559:1989)."},{"key":"e_1_2_1_3_1","unstructured":"ISO\/IEC. 2011. Programming languages C 3rd ed. (ISO\/IEC 9899:2011). Geneva Switzerland.  ISO\/IEC. 2011. Programming languages C 3rd ed. (ISO\/IEC 9899:2011). Geneva Switzerland."},{"key":"e_1_2_1_4_1","unstructured":"Krebbers R. Wiedijk F. N1793: stability of indeterminate values in C11; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1793.pdf.  Krebbers R. Wiedijk F. N1793: stability of indeterminate values in C11; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1793.pdf."},{"key":"e_1_2_1_5_1","unstructured":"Memarian K. Sewell P. 2016. Clarifying the C memory object model (revised version of WG14 N2012). University of Cambridge; http:\/\/www.cl.cam.ac.uk\/~pes20\/cerberus\/notes64-wg14.html#clarifying-the-c-memory-object-model-uninitialised-values.  Memarian K. Sewell P. 2016. Clarifying the C memory object model (revised version of WG14 N2012). University of Cambridge; http:\/\/www.cl.cam.ac.uk\/~pes20\/cerberus\/notes64-wg14.html#clarifying-the-c-memory-object-model-uninitialised-values."},{"key":"e_1_2_1_6_1","unstructured":"Memarian K. Sewell P. 2015 (updated 2016). What is C in practice? (Cerberus survey v2): analysis of responses (n2014) - with comments; https:\/\/www.cl.cam.ac.uk\/~pes20\/cerberus\/notes50-survey-discussion.html.  Memarian K. Sewell P. 2015 (updated 2016). What is C in practice? (Cerberus survey v2): analysis of responses (n2014) - with comments; https:\/\/www.cl.cam.ac.uk\/~pes20\/cerberus\/notes50-survey-discussion.html."},{"key":"e_1_2_1_7_1","unstructured":"Open Standards. 2003. Optional support for signaling NaNs; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1011.htm.  Open Standards. 2003. Optional support for signaling NaNs; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n1011.htm."},{"key":"e_1_2_1_8_1","unstructured":"Peterson R. 2007. Defect report #338. C99 seems to exclude indeterminate value from being an uninitialized register. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/dr_338.htm.  Peterson R. 2007. Defect report #338. C99 seems to exclude indeterminate value from being an uninitialized register. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/dr_338.htm."},{"key":"e_1_2_1_9_1","unstructured":"Seacord R. C. 2016. Clarification of unspecified value. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n2042.pdf.  Seacord R. C. 2016. Clarification of unspecified value. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/n2042.pdf."},{"key":"e_1_2_1_10_1","unstructured":"Wang X. 2012. More randomness or less; http:\/\/kqueue.org\/blog\/2012\/06\/25\/more-randomness-or-less\/.  Wang X. 2012. More randomness or less; http:\/\/kqueue.org\/blog\/2012\/06\/25\/more-randomness-or-less\/."},{"key":"e_1_2_1_11_1","unstructured":"Wiedijk F. Krebbers R. 2013. Defect report #451. Instability of uninitialized automatic variables. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/dr_451.htm.  Wiedijk F. Krebbers R. 2013. Defect report #451. Instability of uninitialized automatic variables. Open Standards; http:\/\/www.open-std.org\/jtc1\/sc22\/wg14\/www\/docs\/dr_451.htm."}],"container-title":["Queue"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3028687.3041020","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3028687.3041020","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:24:01Z","timestamp":1750220641000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3028687.3041020"}},"subtitle":["Understanding the proposed revisions to the C language"],"short-title":[],"issued":{"date-parts":[[2016,12]]},"references-count":11,"journal-issue":{"issue":"6","published-print":{"date-parts":[[2016,12]]}},"alternative-id":["10.1145\/3028687.3041020"],"URL":"https:\/\/doi.org\/10.1145\/3028687.3041020","relation":{},"ISSN":["1542-7730","1542-7749"],"issn-type":[{"type":"print","value":"1542-7730"},{"type":"electronic","value":"1542-7749"}],"subject":[],"published":{"date-parts":[[2016,12]]},"assertion":[{"value":"2016-12-01","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}