0
なぜstrcpy()のこのコードは私にセグメンテーションフォールトを与えますか?私はGNUを使用しており、コードがstrcpyに達すると、セグメンテーション違反で失敗します。なぜこのCコードはstrcpyでセグメンテーションフォルトを取得しますか?
#include<stdio.h>
#include<string.h>
#include<assert.h>
void PrintString(char *buff);
int main()
{
char *buffPtr = malloc(128);
assert(&buffPtr != NULL);
memset(&buffPtr, 0, sizeof(buffPtr));
strcpy(buffPtr, "This is my string");
free(buffPtr);
return 0;
}
'assert(&buffPtr!= NULL); memset(&buffPtr、0、sizeof(buffPtr)); 'は' assert(buffPtr!= NULL)でなければなりません。 memset(buffPtr、0、128); '。また '#include ' –
BLUEPIXY
が必要です。あなたのポインタ値をその' memset'で破壊したからです。あなたはそれをゼロで締め付けた。その後、無効なメモリ位置への 'strcpy'を実行すると、そのsegfaultがトリガされました。 – AnT
この 'sizeof(buffPtr)'はあなたがthikした値を返していません –