关于内存,这个程序有什么问题???

久违的太阳 2010-08-06 09:27:21

#include<stdio.h>
#include<stdlib.h>
int main()
{
char *ps;
ps=(char *)malloc(sizeof(char)*20);
ps="hello";
printf("%s",ps);
free(ps);
}

ps="hello"这句是不是ps并没有指向动态分配的内存,而是指向了栈给字符串自动分配的内存?

该怎么修改呢????
...全文
84 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
久违的太阳 2010-08-06
  • 打赏
  • 举报
回复
8楼

我感觉也是这样的,就是不知道怎么修改 感谢大家!!!
NoneSec 2010-08-06
  • 打赏
  • 举报
回复
你用malloc分配了一段内存,然后用指针ps指向了这段新分配开始的地址。然后你又把ps指针指向了一段常量内存,就是说你改变的只是ps指向的地方,新malloc分配的内存中还是没有填入东西,你可以用strcpy(ps,"hello")或者memmove(ps,"hello",strlen("hello"))来把新分配的内存中填入hello字符串……
ayw215 2010-08-06
  • 打赏
  • 举报
回复
我比你慢了点。。。
ayw215 2010-08-06
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main()
{
char *ps;
ps=(char *)malloc(sizeof(char)*20);
strcpy(ps,"hello");
printf("%s",ps);
free(ps);
}

这样的效果?
chaoliu1024 2010-08-06
  • 打赏
  • 举报
回复
比三楼慢了一点。。。
chaoliu1024 2010-08-06
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>
#include <string.h>

int main()
{
char *ps;
ps=(char *)malloc(sizeof(char)*20);
strcpy(ps,"hello"); // 字符串不能用等号赋值
printf("%s",ps);
free(ps);
return 0;
}
duke56 2010-08-06
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char *ps;
ps=(char *)malloc(sizeof(char)*20);
strcpy(ps,"hello");
// ps= "hello";//你这是想给地址,还是给字符串的?
printf("%s",ps);
free(ps);
return 0;
}
久违的太阳 2010-08-06
  • 打赏
  • 举报
回复
用指针自己分配一段内存 内存中写一个字符串
ayw215 2010-08-06
  • 打赏
  • 举报
回复
你想修改成什么样子呢

69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧