[英]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.