char* a=(char*)malloc(sizeof(char));a="abdkjdkfjd"这样安全吗?

 我来答
可可可可86
2010-06-18 · TA获得超过197个赞
知道答主
回答量:150
采纳率:0%
帮助的人:162万
展开全部
不安全,泄露内存了

违背你的意图;
就算你这样
char* a=(char*)malloc(512);a="abdkjdkfjd";
也还是泄露内存了。
第一句:首先你申请一块内存,让a指向它
第二句:你又将指针a指向了字符串常量"abdkjdkfjd",而没有达到你的目的将"abdkjdkfjd"拷贝到你申请的内存。反而泄露了你申请的内存。

关于C的指针 很不好理解
fanz_no1
2010-06-23 · TA获得超过196个赞
知道答主
回答量:157
采纳率:0%
帮助的人:210万
展开全部
不安全,
sizeof(char)只是给指针分配了 1个字节的空间。

可以申明成 char *buff=(char *)malloc(512),这样才能存放更多的数据.

也不一定512。
或者直接用数组
char a[]="abdkjdkfjd";

补充回答,用a="abdkjdkfjd",这样的方式如另外一位兄弟说的也是不安全的。可以使用字符串拷贝的方法,strcpy(buff,"abdkjdkfjd");不过buff的大小要事先分配好,512不够用的话就分配更大的空间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式