2017-12-07 4 views
-1

64ビットでCプログラムをコンパイルしようとしています。これはすでに32ビットで数年間働いており、一部のクライアントで使用されています。Cポインタのコンパイルエラーが64ビットではなく32ビットで動作する

32ビットで動作するコードの例:実行中

conversion between a pointer and an integer of different size

とセグメンテーションフォールト:iは誤差が64ビットでCompilで

#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; 
} 

私はCでポインタの経験がないので、私は助けを求めるのが好きです!

コメントでmentionnedとして
+1

どの行ですか?そしてどのラインでクラッシュするのですか? –

+4

ヘッダが見つからないようですが、 'malloc()'と 'getenv()'の両方に '#include 'があります。さもなければ、 'sizeof(int)!= sizeof(void *)'のときにdefault-'int'があなたに噛み付きます。 – unwind

+0

vhome =(char *)getenv( "VHOME");すでに64ビットでクラッシュしています –

答えて

0

は、あなたがすべきである:

  • は、適切なヘッダ(STDLIB.Hとstring.hの)値を戻すための
  • チェック、特にのgetenvコールが含ま

+0

ありがとう –

関連する問題