簡體   English   中英

在將memset設置為默認值后驗證數組中的更改

[英]Verifying changes in array after memset to default value

我有以下代碼,其中:(1)使用默認值初始化數組; (2)對數組做點事; (3)檢查數組是否仍然是默認的。 我不確定(3)。

#include <stdlib.h>
#include <stdio.h>
#include <inttypes.h>
#include <string.h>

#define ARRAY_MAX 10
#define DEFAULT_VALUE 0

int main(int argc, char *argv[])
{
    uint32_t array[ARRAYMAX];

    memset(array, DEFAULT_VALUE, sizeof(array));
    do_something_with(array);
    check_array_is_default(array);
    return 0;
}

我將檢查數組是否僅為默認值的方式如下(即,這就是我編寫check_array_is_default()函數的方式):

int check_array_is_default(uint32_t *array)
{
    int i;
    uint32_t defval = DEFAULT_VALUE;

    for (i = 0; i < ARRAY_MAX; i++)
    {
    if (memcmp((array + i * sizeof(uint32_t)), &defval, sizeof(uint32_t)))
    {
        return 0;
    }
    }
    return 1;
}

memset填充字節,而不是單詞,因此您需要單獨查看字節:

int check_array_is_default(uint32_t *array)
{
    char *p = (char *)array;
    int n = ARRAY_MAX * sizeof(array[0]);
    for (int i = 0; i < n; i++) {
        if(p[i] != DEFAULT_VALUE) {
           return 0;
        }
    }
    return 1;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM