【发布时间】:2012-03-29 05:54:06
【问题描述】:
我是如何分配内存的
char *convertToPostfix(char **infixExpr)
{
char *postfixExpr = (char *) malloc(strlen(*infixExpr) * sizeof(char) * 2);
...
return postfixExpr;
}
这是我如何使用此内存的:
char *subexpr = convertToPostfix(infixExpr);
free(subexpr);
while (*subexpr)
postfixExpr[i++]=*subexpr++;
为什么这个程序在free(subexpr);之后正常运行
我的意思是为什么释放后可以迭代?
当函数返回一些内存并在另一个上下文中释放时,我是否以这种方式正确地工作?
【问题讨论】:
-
参见 stackoverflow.com/a/6445794/1025391(标记为 C++,但也主要适用于您的情况)
-
修复代码中的错误,谜团就会消失。有缺陷的代码会做一些奇怪且不可预测的事情,这并不奇怪。
标签: c memory-management malloc free