我可以: 邀请好友来看>>
ZOL星空(中国) > 技术星空(中国) > C/C++星空(中国) > 请问UNIX下指针的使用有什么需要特别注意的地方
帖子很冷清,卤煮很失落!求安慰
返回列表
签到
手机签到经验翻倍!
快来扫一扫!

请问UNIX下指针的使用有什么需要特别注意的地方

300浏览 / 9回复

0
精华
1
帖子

等  级:Lv.1
经  验:100
  • Z金豆:

    千万礼品等你来兑哦~快点击这里兑换吧~

  • 城  市:
  • 注  册:
  • 登  录:
发表于 2008-12-10 10:34:00
电梯直达 确定
楼主
[Copy to clipboard] [ - ]
CODE:
#include
#includeint main()
{
    char *p1;
    char *p2 = "hello world";
    strncpy(p1, p2, strlen(p2)+1);
    printf("p1 = %sn",p1);
    return;
}

这段在redhat5下编译通过后执行可得 hello world 。
但在AIX5.3就Segmentation fault (core dumped)。
HP_UX11v1也一样。而在AIX只要把代码改成如下
[Copy to clipboard] [ - ]
CODE:
#include
#includeint main()
{
    char *p2 = "hello world";
    char *p1;
    strncpy(p1, p2, strlen(p2)+1);
    printf("p1 = %sn",p1);
    return;
}

也可以得到正确的打印结果。(不过HP不可以)
请问UNIX下指针的使用有什么需要特别注意的地方?


kongsubit

kongsubit


精华

帖子

等  级:Lv.2
经  验:382
发表于 2008-12-10 10:36:00 1楼
不要使用没有分配的内存!!!


精华

帖子

等  级:Lv.1
经  验:100
发表于 2008-12-10 10:38:00 2楼

您的内容正在火速审核中,请稍等

jiepao

jiepao


精华

帖子

等  级:Lv.4
经  验:2244
发表于 2008-12-10 10:39:00 3楼

那个不是习惯。。。是规则,必须遵守如 flw 所说:错误的方法不一定会得到错误的结果

alex_zhit

alex_zhit


精华

帖子

等  级:Lv.2
经  验:485
发表于 2008-12-10 10:41:00 4楼

这话怎么听着这么耳熟……

bladrunnerit

bladrunnerit


精华

帖子

等  级:Lv.4
经  验:1508
发表于 2008-12-10 10:43:00 5楼

迅速编辑了。。。这是我在cu上学到的第一句有意义的话


精华

帖子

等  级:Lv.1
经  验:100
发表于 2008-12-10 10:44:00 6楼
谢谢赐教了。
错误的方法不一定会得到错误的结果,我记下了。


精华

帖子

等  级:Lv.1
经  验:100
发表于 2008-12-10 10:47:00 7楼
我还想深究一下:第二代码没出现段错误是不是定义p2时赋值时分配了空间,而p1进堆栈就跟着p2分配的空间了?

liheyangit

liheyangit


精华

帖子

等  级:Lv.4
经  验:1904
发表于 2008-12-10 10:52:00 8楼
指针在使用前一定要分配的,在不同的系统下错误不同应该是编译器的问题(可能),应该写正确的代码,而不应该琢磨错误的代码怎样能够正确运行,呵呵。

lanhun99it

lanhun99it


精华

帖子

等  级:Lv.3
经  验:754
发表于 2008-12-10 10:54:00 9楼

您的内容正在火速审核中,请稍等

yangqianyi

yangqianyi


精华

帖子

等  级:Lv.6
经  验:9376
发表于 2011-03-31 10:00:25 10楼
我就看看^-^

smallni

smallni


精华

帖子

等  级:Lv.3
经  验:1262
发表于 2011-03-31 18:11:51 11楼
呵呵O(∩_∩)O~
高级模式
星空(中国)精选大家都在看24小时热帖7天热帖大家都在问最新回答

针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员查看帮助  或  给我提意见

快捷回复 APP下载 返回列表