Я пишу функцию в C, которая принимает в качестве входных данных массив и дает в качестве вывода два массива. Функция будет записывать в массив, который передается в качестве аргумента. Как «сбой безопасности» для предотвращения ошибок памяти, я хочу проверить, является ли указатель, переданный в функцию, действительным адресом памяти или нет, и если это так, освободите его. Вот код, который я до сих пор, с той частью, что я до сих пор не уверен в затушил:Как проверить, что значение представляет адрес
int fft(double* signal, double* real, double* imag, int size) {
double retVal;
/*initialize output arrays*/
if(/*real is a valid memory address */) {
free(real);
}
Как проверить, что real
является действительным адресом памяти, не сегментное вино при попытке освободить его ?
Я думаю, вы не можете –
Я думаю, если вам нужно проверить это, вы делаете что-то не так. – gronostaj
@ gronostaj Хорошо, что я делаю это, чтобы убедиться, что ничего не получилось. Это предотвращает непреднамеренное переключение пользователя на плохой адрес памяти без разваливания всей программы. – Ataraxia