次のCコードをコンパイルしようとすると、バスエラーが発生します。 私はそれがmemcpyと呼ばれる方法と関係があると推測していますが、私はそれを理解できません。 ご協力いただければ幸いです!あなたの割り当て後、NOTあなたの割り当てられたメモリへの文字列リテラルにバスエラー:10. Cコード、mallocの例
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char *p = (char*)malloc(sizeof(char)*11);
// Assign some value to p
p = "hello";
char *name = (char*)malloc(sizeof(char)*11);
// Assign some value to name
name = "Bye";
memcpy (p,name,sizeof(char)*10); // Problem begins here
return 0;
}
その他の注釈:[mallocの戻り値をキャストしない](http://stackoverflow.com/questions/605845/)。 'strncpy'などの関数がその目的のために存在するときに、なぜ*文字列*をコピーするのに' memcpy'を使用していますか? – DCoder