- スレを勃てるまでもないC/C++の質問はここで 22
84 :デフォルトの名無しさん[sage]:2014/05/25(日) 11:35:03.11 ID:JrQwFRNG - #include<stdio.h>#include<string.h>#include<stdlib.h>
void f(char*,int); int main(void){ char hoge[10]; scanf("%9s",hoge); f( hoge,strlen(hoge) );//文字列と \0を除く文字数 return 0; } void f(char* hoge,int len){ char** pp = (char**)malloc(sizeof(char*) *(len+1) ); int i; char b='\0'; if( *pp == NULL ){ printf("memoryerror"); }else{ *(pp+len)=&b; for(i=0;i<len;i++){ *(pp+i)=&hoge[i]; } printf("%s\n",*pp); } free(pp); } これ学校のサーバ(詳細不明)上gccで実行するとmemoryerror VisualC++2010Expressで実行すると入力と出力が一致するのですが こういうことってよくあることなのでしょうか またメモリ確保できなかった理由わかりますか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
87 :デフォルトの名無しさん[sage]:2014/05/25(日) 12:05:13.32 ID:JrQwFRNG - 可読性は悪くて申し訳ない
他のコードをコンパクトにしたら意味のないものになってしまいました >>86 直してみましたが visualC++で思い通り gcc でmemoryerrorです ポインタの動的配列を作って要素にアクセスしたいのですがあってますか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
90 :デフォルトの名無しさん[sage]:2014/05/25(日) 12:19:00.66 ID:JrQwFRNG - 申し訳ない!
>>86 >>88 修正でgcc直りました 修正前visualC++ 動いてたのはなぞだが お騒がせしました
|
- スレを勃てるまでもないC/C++の質問はここで 22
91 :デフォルトの名無しさん[sage]:2014/05/25(日) 12:21:02.58 ID:JrQwFRNG - codepadいいですね
もうお騒がせしたくないのですが レベル上がってまともな議論できるようになったらまた来ます
|
- スレを勃てるまでもないC/C++の質問はここで 22
92 :デフォルトの名無しさん[sage]:2014/05/25(日) 12:22:00.93 ID:JrQwFRNG - visualC++はミスを勝手に補っていたと認識すればいいのかな
|
- スレを勃てるまでもないC/C++の質問はここで 22
98 :デフォルトの名無しさん[sage]:2014/05/25(日) 18:15:23.75 ID:JrQwFRNG - >>97 secretで見れませんね
|
- スレを勃てるまでもないC/C++の質問はここで 22
100 :デフォルトの名無しさん[sage]:2014/05/25(日) 19:18:05.82 ID:JrQwFRNG - >>99 29行目 hoge[i]は&つけないといけないと思う
|
- スレを勃てるまでもないC/C++の質問はここで 22
102 :デフォルトの名無しさん[sage]:2014/05/25(日) 22:38:14.80 ID:JrQwFRNG - ああ pp宣言*1個になってるし意図が伝わってなかった
ポインタ型の動的配列を作りたかったんです ポインタの配列なら*p[定数]で済むのに...
|