У меня возникла странная проблема. У меня есть модуль, скажем x.c
и это образец фрагмент кода:Изменен адрес статической глобальной переменной?
typedef struct lat {
int x;
int y;
int z;
} lat;
static lat x;
static void populate(int x, int y, int z) {
lat *pLat = &x;
printf(" The value of pLat is %p \n", pLat);
pLat->x = x;
pLat->y = y;
pLat->z = z;
}
extern dump_report(void *pPayload) {
lat *pLat = &x;
printf(" The value of pLat is %p \n", pLat);
memcpy(pPayload, pLat, sizeof(lat));
}
адрес глобальной переменной разные (printf
s), в этих двух функций? populate()
вызывается внутри модуля и дает правильные значения, а dump_report()
вызывается из другого модуля и дает неправильный адрес глобальной переменной и нулевые значения.
Может ли кто-нибудь сообщить мне, если я что-то неправильно делаю?
Как вы определили, что адрес, напечатанный 'populate', является правильным адресом? (Подсказка: это не так.) – hvd
Используете ли вы компилятор C или C++ - ваш код выглядит как C, но вы тоже отметили C++, что, я думаю, необоснованно. –