设为首页 加入收藏

TOP

C语言内存分配小问题
2014-11-24 12:29:27 来源: 作者: 【 】 浏览:0
Tags:语言 内存 分配 问题

前阵子抱着打酱油的心态去面试了一下学校里某个俱乐部举行的一次执委面试,没想到被几个小问题给卡住了。面试完后下了一天苦工终于把那些问题搞定了,呵呵,看来没事多去面试一下还是有好处的,起码知道自己哪些地方存在不足。这里就说说其中一道关于C语言内存分配的问题。


看下面这个程序:


void allocmem(char **p)
{
char r[10]={1};
*p = r;
}


int main()
{
int i;
char *m = NULL;

allocmem(&m);
if(m)
{
for(i = 0; i<10 ; i++)
printf("m[%d] = %d\n",i,m[i]);
}
else
{
printf("alloc mem failed\n");
}

return 0;
}


运行的结果是:



再看下面这个程序:


void allocmem(char **p)
{
*p = malloc(10);
memset(*p,1,10);
}

int main()
{
int i;
char *m = NULL;

allocmem(&m);
if(m)
{
for(i = 0; i<10 ; i++)
printf("m[%d] = %d\n",i,m[i]);
}
else
{
printf("alloc mem failed\n");
}

return 0;
}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux多线程编程 下一篇Python实现通信网络的dijkstra算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)