1
#include <stdio.h> 
#include <stdlib.h>

int main()
{
    char *ptr = malloc(sizeof(char) * 1);
    ptr = "Hello World";

    puts(ptr);
    getchar();
}

私は malloc() の専門家ではありませんが、1 バイトしか割り当てずに 11 バイトを含む値を *ptr ポインターに割り当てたので、そのコードはエラーを出すはずではありませんか?
または、H は割り当てられた場所に格納され、残りの文字列はその後の場所に格納されますか?

4

2 に答える 2

6

ポインタ 'ptr' をメモリの別のブロックに再割り当てしているため、エラーは表示されません。ただし、割り当てたメモリ ブロック (サイズ 1) は「失われ」、メモリ リークが発生します。

于 2013-04-18T00:17:17.447 に答える