У меня возникли проблемы возвращения недействительным указатель на другую функцию в С.Возвращение Пустоты Указатель обрезает значение
Заголовочный файл:
void *function2(void);
main.C
#include "myHeader.h"
void function1(){
void *temp = NULL;
temp = function2();
}
FUNCTION2.C
int a = 3;
void *function2(void){
printf("Memory Address %p\n",&a);
return (void *) &a; // value of &a is 0x100023444
}
Howev er, значение temp в функции 1() равно 0x3444, а не 0x100023444.
Кто-нибудь знает решение для этого или если я что-то делаю неправильно?
EDITED: Похоже, что заголовок был добавлен не в том месте, что привело к проблеме, описанной AndreyT и Jonathan ниже, что, по-видимому, устранило проблему усечения. Спасибо за помощь ребята!
'return & a' (адрес локальной переменной) является неопределенным поведением. –
извините, исправлено, что – peterrandon
@YuHao: Я не думаю, что возвращение адреса локальной переменной является неопределенным поведением - это ...? – Mehrdad