Realloc() 丢弃限定符
Realloc() discards qualifiers
我正在编写一个代码,该代码必须重新分配指向常量字符串 A、B、C 的指针数组 X(请参阅方案如下):
_______ _______ _______ ________ ________________
|char* A|char* B|char* C|...|char** X|...|char*** pref_arr|...
""""""" """"""" """"""" """""""" """"""""""""""""
__ __
|\______________________/ |\__________/
我有 A,B,C 的数组,指向该数组 X 的指针和一个 pref_arr 的指针指向 X。
我在方案中没有 space,但所有字符都符合 const.
然后我有以下代码
function(const char*** pref_arr, int new_length) {
const char** new_pref_arr = realloc(**pref_arr, sizeof(const char*) * new_length);
// some other stuff to do...
}
我试图将数组 X 重新分配到长度 new_length。
问题是,我的 IDE 警告我将 const char*
传递给 void*
会丢弃限定符。
这里的问题是,您取消引用太多,一个星号正是您想要的,而不是两个。见下文:
function(const char*** pref_arr) {
const char** new_pref_arr = realloc(*pref_arr, sizeof(const char*) * N);
// some other stuff to do...
}
您在代码中所做的是尝试重新分配字符串 A(因为 **pref_arr
恰好指向那里 - 通过双重取消引用),这可能不是您想要的。
我正在编写一个代码,该代码必须重新分配指向常量字符串 A、B、C 的指针数组 X(请参阅方案如下):
_______ _______ _______ ________ ________________
|char* A|char* B|char* C|...|char** X|...|char*** pref_arr|...
""""""" """"""" """"""" """""""" """"""""""""""""
__ __
|\______________________/ |\__________/
我有 A,B,C 的数组,指向该数组 X 的指针和一个 pref_arr 的指针指向 X。 我在方案中没有 space,但所有字符都符合 const.
然后我有以下代码
function(const char*** pref_arr, int new_length) {
const char** new_pref_arr = realloc(**pref_arr, sizeof(const char*) * new_length);
// some other stuff to do...
}
我试图将数组 X 重新分配到长度 new_length。
问题是,我的 IDE 警告我将 const char*
传递给 void*
会丢弃限定符。
这里的问题是,您取消引用太多,一个星号正是您想要的,而不是两个。见下文:
function(const char*** pref_arr) {
const char** new_pref_arr = realloc(*pref_arr, sizeof(const char*) * N);
// some other stuff to do...
}
您在代码中所做的是尝试重新分配字符串 A(因为 **pref_arr
恰好指向那里 - 通过双重取消引用),这可能不是您想要的。