C指针中的汇编误差在32位,而不是64位

  • 本文关键字:64位 32位 指针 汇编 误差 c
  • 更新时间 :
  • 英文 :


我正在尝试以64位编译C程序。它已经在32位工作了几年,并被一些客户使用。

在32位工作的代码的示例:

#include <stdio.h>
int main() {
    char* rcfilename ;
    char* vhome ;
    char* script = "/script/main.tcl" ;
    vhome = (char *)getenv("VHOME");
    rcfilename = (char *) malloc(strlen(vhome) + strlen(script) + 1) ;
    strcpy(rcfilename, vhome) ;
    return 0;
}

在64位的编译中,我有一个错误:

指针和不同大小的整数之间的转换

和执行中的分割故障。

我没有C中的指针经验,所以我更喜欢寻求帮助!

如评论中所述,您应该:

  • 包括适当的标头(stdlib.h and string.h)
  • 检查值返回的值,特别是getEnv调用:

    if (!(vhome = (char *)getenv("VHOME"))){
        fprintf(stderr, "getenv("VHOME") returned NULLn");
        return -1;
    }
    

最新更新