野指针产生

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()的结束,栈区内存释放,字符数组也就不存在了,所以会产生野指针,输出结果未知 

posted @ 2016-05-24 16:44  程序员姜戈  阅读(206)  评论(0编辑  收藏  举报