首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于字符串内存分配的有关问题

2012-04-09 
关于字符串内存分配的问题像我现在定义这么一个函数char*getstring(void){char*ppskdkddkdk returnp

关于字符串内存分配的问题
像我现在定义这么一个函数
char   *   getstring(void)
{   char   *   p;
    p   =   "skdkddkdk ";
    return   p;
}

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

[解决办法]

你上面那个函数最好改成

const char * getstring(void)
{ char * p;
p = "skdkddkdk ";
return p;
}

热点排行