使用malloc和不使用malloc存储字符指针中的值之间的区别

the*_*ick 0 c c++ malloc

我有一个像这样的字符指针

  char *ptr;
Run Code Online (Sandbox Code Playgroud)

我可以像这样为它分配值

  *ptr='a';
  *(ptr+1)='b';
Run Code Online (Sandbox Code Playgroud)

现在当我能做到这一点时,我为什么要使用malloc?

我很幸运,这个指针没有引用进程正在使用的地址吗?或者如果我不使用'malloc',我的数据是否有可能被其他进程损坏?

Sie*_*geX 16

我很幸运,这个指针没有引用进程正在使用的地址吗?

不,你不幸运.如果你很幸运,程序会崩溃,所以你知道你有问题.如上所述,您的代码是未定义的行为.您正在通过指向未分配内存的指针写入数据.

§6.5.6/ 8
如果指针操作数和结果都指向同一个数组对象的元素,或者指向数组对象的最后一个元素,则评估不应产生溢出; 否则,行为未定义.

  • @Shyam:"在我的机器上工作"并不是程序员自称幸运的情况,通常;). (4认同)