В моей визуальной студии, этот кодуказателя без выделения памяти назначения
int *a, *b;
b = a;
a = (int *)malloc(SIZE * sizeof(int));
Получит во время выполнения проверки сбоя: переменные используются без инициализации. Итак, если указатель не выделен, тогда назначение является бессмысленным и запрещенным? По моему старому мнению, указатель представляет собой 4 байта в моей среде разработки для описания адреса. Таким образом, в воображении, то это:
int *a, *b;
b = a;
a = (int *)malloc(SIZE * sizeof(int));
*a = 10;
printf("%d", *b);
Тогда * Ь = 10; Но, видимо, это не так ... Так что я смущен, почему указатель a и b не указывает на одну и ту же память ниже? Может кто-нибудь объяснить это мне?
Почему это работает? http://coliru.stacked-crooked.com/a/4b5c33f1d65e47aa – VermillionAzure
@VermillionAzure Неопределенное поведение. – Barry
@VermillionAzure В моей визуальной студии ... Я описал свою среду ... И еще в вашем коде кажется, что на самом деле ваш указатель не выделяет память. Он используется как Integer ... – lirui