hp-unix下c程序中结构体指针问题--求教
hp-unix服务器信息 :HP-UX AFKOTB01 B.11.23 U ia64
如下是我写的例子:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char s[10];
long l;
}a;
typedef struct{
char s[10];
long l;
}t;
int main()
{
char *str="Fgfgf";
t *z;
a *c;
c=(a*)z;
memset(c,'',sizeof(*c));
memcpy(c->s, str, 4);
printf("%sn",c->s);
return 0;
}
此程序在windows下运行失败,在unix下可以正常执行,没有给结构体指针动态分配内存空间怎莫会正常执行那。
问题处在此处 memcpy(c->s, str, 4);我用的编译命令是aCC +DD64 xxxx.c,生成了a.out,执行它有输出
请高手指教。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
楼上变量c初始化了memset(c,'',sizeof(*c));
gcc下出现段错误,vc下程序崩溃,hp-unix下无问题,结果正确。
而且我的这个是简化的例子,原程序在服务器正常运行了2年多了,不知道有没有hp-unix环境的高手试验一下,看看是我的环境问题,还是unix本来就这样!
求大拿帮助!
能正常执行,不表示程序没有问题。
变量c没有初始化,是个随机值,碰巧这指针的值还属于该进程的内存空间,运行就不会死。
另外我觉得 不要拿win做比较,win有win的规则,hp有hp的规则
回复 3# kylinhaha
C版肯定有在hp-ux下搞C的啊
这个问题我觉得和hp-unix的有很大的关系,不知道有没有对unix了解的,它是怎么分配内存的
建议楼主这个问题放C版更合适