-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として
どの行ですか?そしてどのラインでクラッシュするのですか? –
ヘッダが見つからないようですが、 'malloc()'と 'getenv()'の両方に '#include'があります。さもなければ、 'sizeof(int)!= sizeof(void *)'のときにdefault-'int'があなたに噛み付きます。 –
unwind
vhome =(char *)getenv( "VHOME");すでに64ビットでクラッシュしています –