关键字使static
指针保持活动状态直到程序终止,但是当进程终止时分配给指针的内存是否会buffer
自动释放?还是程序员必须这样做?
在下面的示例中,我们不知道函数将被调用多少次,并且只有在当前调用函数时没有读取任何内容时,我们才能释放分配的内存。否则内存不能被释放,因为我们将需要在下一次调用中使用我们刚刚读取的字节。
功能:
char *readStdin(void) {
static char *buffer = NULL;
ssize_t ret;
if (buffer != NULL) {
// DO SOMETHING WITH PREVIOUSLY READ BYTES
}
/* Allocate and NULL-terminate a Buffer */
buffer = malloc(BUFSIZ);
if (buffer == NULL)
return (NULL);
buffer[BUFSIZ] = '\0';
/* Read from Standard Input at most 'BUFSIZ' characters*/
ret = read(0, buffer, BUFSIZ);
/* Free Buffer if no Input Read */
if (ret <= 0) {
free(buffer);
buffer = NULL;
}
/* Return the read Input */
return (buffer);
}
程序:
int main(void) {
/* Print the Read Bytes */
printf("%s", readStdin());
printf("%s", readStdin());
printf("%s", readStdin());
...
}