【发布时间】:2010-07-03 21:02:21
【问题描述】:
我在释放指针数组(值)中的指针时遇到问题。
typedef struct MyStruct{ char** values; }MyStruct;
在 C 中,我创建了动态数组。
JSDictionary **array = (JSDictionary **)malloc(sizeof(JSDictionary *) * numRows);
resultSet 应该是一个 JSDictionary 指针数组。我创建这样的结构:
JSDictionary * newJSDictionaryWithSize(unsigned int size)
{
JSDictionary *new = malloc(sizeof(JSDictionary));
printf("new %p\n", self);
new->_size = size;
new->count = 0;
new->values = (char **) malloc(sizeof(char *) * size);
for(unsigned int i = 0; i < size; i++){
new->values[i] = (char *)malloc(sizeof(char *));
}
return new;
}
一切都创建和工作正常。是免费给了我一个问题。
void deallocJSDictionary(struct JSDictionary *self)
{
printf("dealloc %p\n", self);
for(unsigned int i = 0; i < self->_size; i++){
printf("free %p\n", &self->values[i]);
free(self->values[i]);
}
free(self->values);
free(self);
}
我得到一个指针被释放没有分配错误。传入的指针显示的内存地址与我创建并添加到数组中的内存地址相同。值指针(在调试器中)在 dealloc 函数中显示与我创建它时相同的内存地址。问题是试图释放值数组中的第一个点。任何想法为什么值指针数组中的第一个点不同?
【问题讨论】: