如何在 free() 函数中转换指针?
How to cast a pointer in the free() function?
"warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] "
这里的问题是免费的((void*)c_array[i]);如果你能告诉我如何解决这个问题,谢谢!
static char* create_char_array() {
char* array = (char*) malloc(sizeof(char)*4);
array[0] = 'd';
array[1] = 'a';
array[2] = 'f';
array[3] = 'b';
return array;
}
static void delete_test_char_array(char* c_array, int len) {
for(int i = 0; i < len; ++i) {
free((char*)c_array[i]);
}
free(c_array);
}
static void test_char_increasing_insertion_sort() {
char* array = create_char_array();
generic_increasing_insertion_sort((void**)array, 4, (ElementsCmp) compare_chars);
TEST_ASSERT_EQUAL('a', array[0]);
TEST_ASSERT_EQUAL('b', array[1]);
TEST_ASSERT_EQUAL('d', array[2]);
TEST_ASSERT_EQUAL('f', array[3]);
delete_test_char_array(array, 4);
}
您正在尝试释放单个角色。 free
函数只接受从 malloc
.
返回的指针
你只调用了一次malloc
,所以只调用了一次free
。
static void delete_test_char_array(char* c_array) {
free(c_array);
}
"warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] "
这里的问题是免费的((void*)c_array[i]);如果你能告诉我如何解决这个问题,谢谢!
static char* create_char_array() {
char* array = (char*) malloc(sizeof(char)*4);
array[0] = 'd';
array[1] = 'a';
array[2] = 'f';
array[3] = 'b';
return array;
}
static void delete_test_char_array(char* c_array, int len) {
for(int i = 0; i < len; ++i) {
free((char*)c_array[i]);
}
free(c_array);
}
static void test_char_increasing_insertion_sort() {
char* array = create_char_array();
generic_increasing_insertion_sort((void**)array, 4, (ElementsCmp) compare_chars);
TEST_ASSERT_EQUAL('a', array[0]);
TEST_ASSERT_EQUAL('b', array[1]);
TEST_ASSERT_EQUAL('d', array[2]);
TEST_ASSERT_EQUAL('f', array[3]);
delete_test_char_array(array, 4);
}
您正在尝试释放单个角色。 free
函数只接受从 malloc
.
你只调用了一次malloc
,所以只调用了一次free
。
static void delete_test_char_array(char* c_array) {
free(c_array);
}