php7扩展开发 内存泄漏

teamade 2016-11-24 03:53:03

HashTable *array, *tmp_h;
zend_string *key, *delim;
zval *keys;
zend_long limit = ZEND_LONG_MAX;
zval *tmp, *val_key;
char *delim_str = ".";

#ifndef FAST_ZPP
if (zend_parse_parameters(ZEND_NUM_ARGS(), "hS!", &array, &key) == FAILURE) {
return;
}
#else
ZEND_PARSE_PARAMETERS_START(2, 2)
Z_PARAM_ARRAY_HT(array)
Z_PARAM_STR(key)
ZEND_PARSE_PARAMETERS_END();
#endif
if (!zend_hash_num_elements(array)) {
RETURN_FALSE;
}

if (key == NULL) {
RETURN_FALSE;
}

if (zend_symtable_exists_ind(array, key)) {
RETURN_TRUE;
}

delim = zend_string_init(delim_str, 1, 0);

array_init(keys);
php_explode(delim, key, keys, limit);

tmp_h = array; /* */
ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(keys), val_key) {
if (zend_symtable_exists_ind(tmp_h, Z_STR_P(val_key))) {
tmp = zend_symtable_find_ind(tmp_h, Z_STR_P(val_key));
if (tmp != NULL && Z_TYPE_P(tmp) == IS_ARRAY) {
tmp_h = Z_ARRVAL_P(tmp);
}
} else {
zval_ptr_dtor(keys);
zend_string_release(delim);
RETURN_FALSE;
}
} ZEND_HASH_FOREACH_END();

zval_ptr_dtor(keys);
zend_string_release(delim);

RETURN_TRUE;

这段代码中运行的时候,提示有内存泄漏

请问是哪里出现了问题
...全文
244 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧