У меня возникает неизвестная и резкая ошибка сегментации при запуске моего кода в AIX. Следующая строка:AIX: Неизвестный вопрос об ошибке сегментации
sourceSample +=value;
дает ошибку сегментации. Здесь sourceSample - это указатель, который указывает на изображение.
Я сделал некоторые изменения в строке выше кода и происходит следующее: ошибка
int *p = sourceSample; sourceSample = p + value;
Сегментация сохраняется.int **p = &sourceSample; sourceSample = *p + value;
Отсутствие ошибки сегментации, и код выполняется успешно.
Может ли кто-нибудь сказать мне, почему это происходит?
ps: Это мой первый вопрос о StackOverflow, так что простите меня, если я пропустил что-нибудь.
Вещь, которую вы пропустили, размещала всю соответствующую выдержку из вашего кода, что позволяет нам воспроизвести проблему. См. Также: [MCVE] –
Знаете ли вы (а) то, что пытается сделать исходная исходная строка, и (б) какие именно изменения вы сделали * на самом деле означает * и как они отличаются? Если нет, я дам вам знать сейчас: * угадывание * это * не * как вы учитесь программировать. – WhozCraig
Единственный способ получить ошибку сегментации от программы на C++, выполняющейся на соответствующей реализации C++, - это показать, что эта программа демонстрирует неопределенное поведение. Нам понадобится [mcve], чтобы определить природу неопределенности, но правдоподобной возможностью является то, что 'sourceSample + value' будет указывать за пределы объекта, в который указывают« sourceSample ». Попытка вычислить такое значение указателя достаточно для создания неопределенного поведения; вы технически не нуждаетесь в разыменовании результата. –