Я использовал Java и совершенно новый для C. Я попытался создать функцию, которая генерирует случайный массив пикселей с malloc. Я освобождаю память в другой функции после использования этого случайного массива. Я думаю, что моя концепция в порядке, но мне интересно, правильно ли я пишу коды, и это действительно освобождает память кучи. Было бы здорово, если бы вы могли посмотреть на коды и посмотреть, работает ли это.malloc() и free() массив в c
pixel* randomPalette(int colors){
int i, x;
pixel * randomArr = (pixel *)malloc(sizeof(pixel)* colors);
srand(time(NULL)); //generate a random seed
for (i = 0; i < colors; i++){
x = rand() % 256;
randomArr[i].r = x; randomArr[i].g = x; randomArr[i].b = x;
}
return randomArr;
}
void QuantizeA(pixel* Im, int width, int height){
//create a random palette of 8 RGB colors;
const int num = 8;
pixel* Arr = randomPalette(num);
//find the min distance between pixel and palette color
int x, y, z;
int min = 195075; // max distance is 255^2 + 255^2 + 255^2
int pos = 0;
for (x = 0; x < height; x++){
for (y = 0; y < width; y++){
//compare distance of the pixel to each palette color
for (z = 0; z < num; z++) {
if (distance(Im[pos], Arr[z]) < min){
Im[pos].r = Arr[pos].r;
Im[pos].g = Arr[pos].g;
Im[pos].b = Arr[pos].b;
}
}
pos++; //go to next piexl
}
}
glutPostRedisplay();
free(Arr);
}
[Пожалуйста, смотрите эту дискуссию о том, почему не бросить возвращаемое значение 'таНос()' и семьи в 'C'.] (http://stackoverflow.com/q/605845/2173917). –
И проверьте, если 'malloc()' возвращает 'NULL', исключений в c нет, поэтому вы можете быть осторожны. Кроме того, в чем вопрос? Переполнение стека не предназначено для проверки правильности рабочего кода, если оно не сработало, пожалуйста, укажите, как это не удается, в противном случае найдите подходящий сайт для вашего вопроса, есть [Обзор кода] (http://codereview.stackexchange.com /). –
В этом случае мне нужно указать возвращаемое значение malloc(), иначе это как-то придет ошибка. – MLAC