【发布时间】:2010-12-01 10:31:45
【问题描述】:
如果我有char* str;,我该如何编写一个接受str 并可以对str 进行更改的函数,以便在函数返回后更改仍然存在?
我拥有的是:
char *str = (char *) malloc(10);
sprintf(str, "%s", "123456789");
//str points to 1
move_ptr(&str);
//str points to 2
void move_ptr(char** str)
{
*str++;
}
有没有更好的方法来做到这一点?
【问题讨论】:
-
小心:如果你增加指针'str',你就会丢掉分配内存的句柄,从而造成内存泄漏。
-
Johnathan 提出了一个很好的观点,尽管它比泄漏更糟糕:如果你增加唯一指向你的 malloced 内存的指针并尝试 free(str ) 增加的值,你的程序几乎肯定会崩溃。