关于字符串内存分配的问题
像我现在定义这么一个函数
char * getstring(void)
{ char * p;
p = "skdkddkdk ";
return p;
}
像写这么一个函数有没有什么问题?因为如果 "skdkddkdk "字符串分配在堆栈里的话,当函数返回时,此内存就此释放了。因此外部再次引用它时不是非法了。如果是分配在堆里的话,当我不想指向它时,岂不是浪费内存(因为不知道怎么释放啊)。
还有在全局定义的话,如char * p = "skdklddk ";是不是该字符串分配在静态区的(静态区是程序从运行到结束都占用的)?动态区是不是分堆和堆栈?(动态区是临时分配临时释放,堆栈是交给系统分配和释放,堆是交给程序员分配和释放)
请大家帮忙解答一下,我上面哪些地方说错了。谢谢!
[解决办法]
你上面那个函数最好改成
const char * getstring(void)
{ char * p;
p = "skdkddkdk ";
return p;
}