Тест, чтобы видеть, должен ли я свободная память или нет

Я передаю указатель на массив символов к моему методу, а также значение для фактической высоты массива символов. Я - цикличное выполнение до, видят, ли все значения 0, если они - затем возврат 0, еще возвратитесь 1.

Метод используется в качестве теста, чтобы видеть, должен ли я свободная память или не и устанавливать указатель в NULL, если это полно 0. Проблема, которую я имею, - то, что программа должна иметь "некоторую несвободную" память в конце, таким образом, я понятия не имею, борюсь ли его выполнение его правильно - и gdb я с очень.

Спасибо за чтение

int shouldBeNull(char *charPointer, int sizeOfCharArray)
{
    int isIn = 0;
    int i = 0;

    while(i < sizeOfCharArray){
        if(*charPointer != '0'){
            isIn = 1;
            break;
        }
        i++;
        charPointer++;
    }   
    return isIn;     
}
10
задан Tim 17 September 2012 в 02:46
поделиться

3 ответа

  • Вы не возвращаете 1, если не все значения равны 0
  • Вместо установки isIn и выхода из цикла вы можете просто вернуть 1 из условия
1
ответ дан 4 December 2019 в 01:30
поделиться

Вы не увеличиваете charPointer

4
ответ дан 4 December 2019 в 01:30
поделиться

Когда вы говорите «... все значения равны нулю ...», я предполагал, что вы имели в виду двоичные значения нуля, а не символ '0' ...

if(*charPointer != '0'){

Это нулевой символ (0x31), а не нулевой символ (0x00). Если вы пытались проверить нулевые байты, попробуйте следующее:

if (*charPointer != '\0') {

Кроме того, вы без увеличения или смещения указателя на ваш символ charPointer , поэтому вы всегда проверяете первый символ.

if (*charPointer++ != '\0) {

... или ...

if (*(charPointer + i) != '\0) {
5
ответ дан 4 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: