0,數據被改寫時我們需要怎么定位,我們首先需要確認數據是邏輯上被改寫還是踩內存被改寫的。
1,當數據被踩時,也就是出現數據異常時,并且可以穩定復現時,我們確認時踩固定內存時,我們可以使用魔術字定位問題。
代碼舉例查看確認。
#include <stdio.h>
#include <string.h>
#define MAGIC_BYTE 0xAA // 定義魔術字(單字節)
typedef struct {
uint8_t magic_front; // 前魔術字(1字節)
int id; // 結構體內容
char name[32]; // 結構體內容
uint8_t magic_back; // 后魔術字(1字節)
} SafeStruct;
// 初始化結構體,設置前后魔術字
void init_struct(SafeStruct *s, int id, const char *name) {
s->magic_front = MAGIC_BYTE;
s->id = id;
strncpy(s->name, name, sizeof(s->name) - 1);