我有一个像这样的字符指针
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
如果指针操作数和结果都指向同一个数组对象的元素,或者指向数组对象的最后一个元素,则评估不应产生溢出; 否则,行为未定义.