c - 如何在 free() 函数中转换指针?
问题描述
“警告:从不同大小的整数转换为指针 [-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);
}
解决方案
您正在尝试释放单个角色。该free
函数只接受从malloc
.
你只调用malloc
一次,所以只调用free
一次。
static void delete_test_char_array(char* c_array) {
free(c_array);
}
推荐阅读
- android - 在用户首先拒绝的情况下重新请求 Android/iOS 权限
- angular - 如何使用 nginx 访问 Angular 应用程序的特定路由
- django - 如何为我的视图添加信号方法?
- java - 如何包括正在进行的黄瓜测试,但不执行它们
- curl - 在 jenkins-pipeline 中进行奇怪调用的 Curl 命令
- java - Tess4J 4.0.0 java.lang.UnsatisfiedLinkError:找不到指定的模块
- sql-server - 主键索引
- css - 透视在 Mozilla Firefox 上不起作用?
- r - 如何强制 R 更新 png 文件创建日期?
- django - Geodjango 创建一个新的 SRID