最近、C言語でもC++でもポインタ変数への代入でエラーが頻出しています。
エラー内容としては
//gdb スタックトレース Program received signal SIGSEGV, Segmentation fault. 0x0040145e in StrCpy (pDst=0x405044 <__register_frame_info+4214852> "AICAKDEBCDLA", pSrc=0x405051 <__register_frame_info+4214865> "aaaa") at functions.c:3 3 *pDst='\0';
ソースコード
C
1//関数 2int StrCpy(char *pDst, char*pSrc){ 3 *pDst='\0'; 4 while(*pSrc!='\0'){ 5 *pDst = *pSrc; 6 pDst++; 7 pSrc++; 8 } 9 *pDst='\0'; 10 return 0; 11} 12//main 13#include "functions.h" 14#include <stdio.h> 15int main(void){ 16 char *buff="AICAKDEBCDLA"; 17 StrCpy(buff,"aaaa"); 18 printf("StrCpy : %s\n",buff); 19}
目的はなくただの勉強ソースコードなので別にstring.hのstrcpyを使ってくださいというのはなしでお願いします。
だいぶ前に実行した際には普通に動いたのですが、現在になって動かした際に動かなくなってしまったので、困っています。
メモリー自体変数宣言時に確保するものなので、その場所がたまたま悪かった場合に動かないということもあるのでしょうが、
それで動かないでは話にならないので、こういう場合の対策を教えていただきたいです。
ご回答のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 11:52
2019/12/14 15:57
2019/12/14 16:28
2019/12/14 22:31