簡體   English   中英

未初始化條件 Valgrind

[英]Uninitialized Condition Valgrind

使用 Valgrind 運行以下 C 程序后,它說packets.payload變量未初始化。 但我不知道為什么,因為我已經在packets.payload中輸入了“1234567890”

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

typedef struct packet {
    int payload_length;
    char payload[10];
} packet_t;


int main () {
    packet_t packet;
    strncpy(packet.payload, "1234567890", 10);
    puts(packet.payload);
}

必須將指向字符串以 null-character 終止的字符序列)的指針傳遞給puts()

您的packet.payload不包含終止空字符,因此您不能將其用於puts()

您可以使用printf()指定長度來打印以打印:

printf("%.*s\n", 10, packet.payload);

packet_t packet ={0, "0000000"}是初始化。 在代碼中,您只是分配值,而不是初始化。 變量的初始化在構造(定義)時提供其初始值。

暫無
暫無

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

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