分享到:
发表于 2008-12-10 10:34:00 楼主 | |
[Copy to clipboard] [ - ] CODE:#include #include { 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 #include { char *p2 = "hello world"; char *p1; strncpy(p1, p2, strlen(p2)+1); printf("p1 = %sn",p1); return; } 也可以得到正确的打印结果。(不过HP不可以) 请问UNIX下指针的使用有什么需要特别注意的地方? |
|
楼主热贴 |
发表于 2008-12-10 10:36:00 1楼 | |
不要使用没有分配的内存!!! |
|
个性签名:
|
发表于 2008-12-10 10:38:00 2楼 | |
您的内容正在火速审核中,请稍等 |
|
发表于 2008-12-10 10:39:00 3楼 | |
那个不是习惯。。。是规则,必须遵守如 flw 所说:错误的方法不一定会得到错误的结果 |
|
个性签名:
|
发表于 2008-12-10 10:41:00 4楼 | |
这话怎么听着这么耳熟…… |
|
发表于 2008-12-10 10:43:00 5楼 | |
迅速编辑了。。。这是我在cu上学到的第一句有意义的话 |
|
个性签名:
|
发表于 2008-12-10 10:44:00 6楼 | |
谢谢赐教了。 错误的方法不一定会得到错误的结果,我记下了。 |
|
发表于 2008-12-10 10:47:00 7楼 | |
我还想深究一下:第二代码没出现段错误是不是定义p2时赋值时分配了空间,而p1进堆栈就跟着p2分配的空间了? |
|
发表于 2008-12-10 10:52:00 8楼 | |
指针在使用前一定要分配的,在不同的系统下错误不同应该是编译器的问题(可能),应该写正确的代码,而不应该琢磨错误的代码怎样能够正确运行,呵呵。 |
|
发表于 2008-12-10 10:54:00 9楼 | |
您的内容正在火速审核中,请稍等 |
|
个性签名:
|
发表于 2011-03-31 10:00:25 10楼 | |
我就看看^-^ | |
发表于 2011-03-31 18:11:51 11楼 | |
呵呵O(∩_∩)O~ | |
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见