我知道如果指针位于堆上,则更改指针的地址是不安全的,因为稍后释放它会引起一些麻烦,但是如果指针在堆栈上声明,那么这样做安全吗?
我正在谈论这样的事情:
char arr[] = "one two three";
arr++;
//or arr--;
我希望我通过将 char 数组引用为指针来正确理解这一点。
您无法更改数组的地址。它会给出编译时错误。看一看:http://codepad.org/skBHMxU0 http://codepad.org/skBHMxU0
EDIT:
这些评论让我意识到你的真实意图:
就像是:
char *ptr = "one two three";
ptr++;
没有问题。字符串“一二三”是一个常量,可以随意修改ptr
,但请注意,稍后您可能会很难再次找到该字符串的开头...[但不会发生内存泄漏]
作为一条经验法则,您负责使用 malloc/new 专门分配的内存,编译器负责其余的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)