野指針產生

Q:以下代碼輸出結果是什麼?數組

#include<stdio.h>
char *myString()
{
    char buffer[6] = {0};
    char *s = "Hello World!";
    for (int i = 0; i < sizeof(buffer) - 1; i++)
    {
        buffer[i] = *(s + i);
    }
    return buffer;
}
int main(int argc, char **argv)
{
    printf("%s\n", myString());
    return 0;
}
    A、Hello
    B、Hello World!
    C、Well
    D、以上所有不正確

A:函數char *myString()中沒有使用new或者malloc分配內存,全部buffer數組的內存區域在棧區。隨着char *myString()的結束,棧區內存釋放,字符數組也就不存在了,因此會產生野指針,輸出結果未知 函數

相關文章
相關標籤/搜索