| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2133 人关注过本帖
标题:strdup() 函数的存在有什么意义吗
只看楼主 加入收藏
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用Devil_W在2012-8-12 23:30:48的发言:


你这么一说,我就又开始怀疑,你是不是真的懂了。

以你
const char * fun()
{
    ...
    char * p="aaaa"
    return p;  // 这个时候最好用strdup, 而不是直接把p传出去, 这么做 可以保证安全。
}

这个例子,也就是数说fun() 返回一个指向字符串的指针 p 时,最好strdup(p) 一下, 为aaaa 再分配几个字节,然后把aaaa复制过去,

然后返回新的指针, 最后用完之后free。 至于说可以保证安全,那应该是相对strcpy来说的安全吧,请问这个安全具体是指??

The quieter you become, the more you can hear
2012-08-12 23:45
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用madfrogme在2012-8-12 23:45:41的发言:

 
以你
const char * fun()  
{  
    ...  
    char * p="aaaa"  
    return p;  // 这个时候最好用strdup, 而不是直接把p传出去, 这么做 可以保证安全。  
}
 
这个例子,也就是数说fun() 返回一个指向字符串的指针 p 时,最好strdup(p) 一下, 为aaaa 再分配几个字节,然后把aaaa复制过去,
 
然后返回新的指针, 最后用完之后free。 至于说可以保证安全,那应该是相对strcpy来说的安全吧,请问这个安全具体是指??

溢出的危险

头回见这玩意 长学问了
2012-08-12 23:50
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
以下是引用madfrogme在2012-8-12 23:45:41的发言:

 
以你
const char * fun()  
{  
    ...  
    char * p="aaaa"  
    return p;  // 这个时候最好用strdup, 而不是直接把p传出去, 这么做 可以保证安全。  
}
 
这个例子,也就是数说fun() 返回一个指向字符串的指针 p 时,最好strdup(p) 一下, 为aaaa 再分配几个字节,然后把aaaa复制过去,
 
然后返回新的指针, 最后用完之后free。 至于说可以保证安全,那应该是相对strcpy来说的安全吧,请问这个安全具体是指??


我以为你真的明白了的。

其实所有的精髓 就在安全 这两个字里面。
2012-08-12 23:54
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
以下是引用Devil_W在2012-8-13 00:54:39的发言:



我以为你真的明白了的。

其实所有的精髓 就在安全 这两个字里面。


好吧,我相信这里的安全是指:首先算一下需要多少字节存储字符串,确实分配到内存之后,再复制

如果大神不点明,我的理解只能停在这一步了,不过感觉应该就是这么回事了

The quieter you become, the more you can hear
2012-08-13 00:14
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
你问问pangding 是什么意思?
2012-08-13 16:15
快速回复:strdup() 函数的存在有什么意义吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022249 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved