Systems IO
Stack Buffer
A stack buffer can hold a small generated string when the program writes a terminator.
capacity
The buffer has room for data characters plus the terminating zero byte.
terminator
Writing `'\0'` turns the filled characters into a C string.
Stack Buffer
stack_buffer.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
int main(void) {
int limit = 3;
char buffer[6] = {0, 0, 0, 0, 0, 0};
for (int i = 0; i < limit; i++) {
buffer[i] = (char)('A' + i);
}
buffer[limit] = '\0';
printf("text=%s length=%d\n", buffer, limit);
return 0;
}
#include <stdio.h>
int main(void) {
int limit = 2;
char buffer[6] = {0, 0, 0, 0, 0, 0};
for (int i = 0; i < limit; i++) {
buffer[i] = (char)('A' + i);
}
buffer[limit] = '\0';
printf("text=%s length=%d\n", buffer, limit);
return 0;
}
#include <stdio.h>
int main(void) {
int limit = 5;
char buffer[6] = {0, 0, 0, 0, 0, 0};
for (int i = 0; i < limit; i++) {
buffer[i] = (char)('A' + i);
}
buffer[limit] = '\0';
printf("text=%s length=%d\n", buffer, limit);
return 0;
}
limit ← 3, buffer ← (empty)
3int main(void) {4 int limit→ 3 = 3; //@limit=2, 55 char buffer→ (empty)[6] = {0, 0, 0, 0, 0, 0};buffer[i] ← A
pass 1 of 37for (int i0 = 0; i < limit3; i++) {8 buffer[i]→ A = (char)('A' + i0);9}All 3 passes — pass 1 is the card above pass ibuffer[i]1 0