より複雑なプログラムを作成しましたが、問題を次のプログラムに絞り込みました。このプログラムがhzlloではなくジャンクを印刷するのはなぜですか。デバッガーでtempとpの値とメモリアドレスを追跡しましたが、foo関数から正しく返されます。そのため、印刷ジャンクがわかりません。
void foo(char **str) {
char temp[79];
strcpy_s(temp,79,*str);
*(temp + 1) = 'z';
*str = temp;
}
void main() {
char *p = (char*) malloc(79 * sizeof(char));
p = "hello";
foo(&p);
printf("%s", p);
}