如何在free()函数中投掷指针?[已关闭]

问题描述 投票:-1回答:1

"警告:从不同大小的整数投向指针[-Wint-to-pointer-cast]"

问题在这里free((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);
 }
c pointers free
1个回答
2
投票

你在尝试释放单个字符。 你正在尝试释放单个字符。free 函数只接受从 malloc.

你只叫 malloc 一次,所以只叫 free 一次。

static void delete_test_char_array(char* c_array) {
    free(c_array);
}
© www.soinside.com 2019 - 2024. All rights reserved.