Результаты поиска по запросу "pointers"
) вместо того, чтобы копировать символы в место назначения,
етил, что при записи строки в массиве, выделенном сmalloc(), его значение меняется. Чтобы быть понятным, вот код, который повторяет эту «ошибку»: #include <unistd.h> #include <string.h> #include <stdio.h> #include <fcntl.h> #include <stdlib.h> ...
для обозначения размеров массивов, нет, конечно, это не так.
унаследовал массивы от C, где они используются практически везде. C ++ предоставляет абстракции, которые проще в использовании и менее подвержены ошибкам (std::vector<T> начиная с C ++ 98 иstd::array<T, ...
Хорошо, я понял, спасибо.
вопрос следует за этимодин [https://stackoverflow.com/questions/48188737/is-pointer-arithmetic-on-inactive-member-of-a-union-ub] Давайте рассмотрим этот пример кода: struct sso { union{ struct { char* ptr; char size_r[8]; } large_str; ...
на некоторых компиляторах) не рассматривает указатели как тривиальные типы. Компиляторы не относятся к требованиям стандарта серьезно, равно как и люди, которые пишут стандарты, мечтают о другом языке и изобретают всевозможные изобретения, которые прямо противоречат основным принципам. Очевидно, что пользователи смущены и иногда плохо обращаются, когда жалуются на ошибки компилятора.
ношенииэтот вопрос и ответ [https://stackoverflow.com/questions/48058545/are-there-any-guarantees-for-unions-that-contain-a-wrapped-type-and-the-type-its/48060029#48060029] .) До стандарта C ++ 17 следующее предложение было включено ...
Причина, по которой вы не можете очистить разыменованный указатель, заключается в том, что сброс необходим только для значений в аппаратных регистрах. В OpenMP никогда не требуется сбрасывать то, что НЕ находится в аппаратном регистре (например, в кеше или памяти), поскольку OpenMP предполагает согласованную кеш-память, которая гарантирует, что все потоки всегда будут видеть одно и то же значение, когда один и тот же адрес разыменовываются. Аппаратные протоколы гарантируют согласованность кэша, благодаря чему несколько локальных кэшей ведут себя как один общий глобальный кэш.
ько что заметил, что следующий код не компилируется в OpenMP (в соответствии с GCC 4.5.1): struct job { unsigned busy_children; }; job* j = allocateJob(…); // … #pragma omp flush(j->busy_children)Компилятор жалуется на-> в списке аргументов, ...
«Другие части программы, пытающиеся использовать удаленные объекты, будут вызывать у вас ошибку»… вероятно, segfaulting - наилучший из возможных результатов, он улавливает место, где находится проблема. Но есть много других возможностей, которые не будут замечены до позднего времени и могут даже привести к повреждению, которое будет продолжаться после выхода из программы (например, если буфер записи файла был выделен в свободной памяти).
у меня есть указатель на массив указателей. Если я удалю это так: delete [] PointerToPointers;Это также удалит все указанные указатели? Если нет, нужно ли перебирать все указатели и удалять их, или есть более простой способ сделать это? Мой ...
, По сути, создание и уничтожение такого указателя будет действовать как барьеры последовательности, но их использование не будет. Код, который создает такие указатели в узком цикле, может работать плохо, но возможность поставить барьеры вне цикла может позволить более эффективный код, чем это было бы возможно в противном случае.
сно этомуответ [https://stackoverflow.com/a/48062531/5632316], начиная с C ++ 17, даже если указатель имеет правильный адрес и разыменование правильного типа, это может вызватьнеопределенное поведение. alignas(int) unsigned char ...
указателя.
аю упражнение, в котором мне нужно распечатать память (адрес) указателя. Было бы легко сделать это сprintf("%p", ..) но я не могу использовать это. Знаете ли вы, как я могу получить адрес без использованияprintf()? Единственная функция, которую ...
Да, вы возвращаете массив, который фактически является закулисным указателем, на адрес ячейки памяти, где хранится содержимое переменной, которую вы инициализировали. Поэтому предупреждаю вас, что возвращать такой результат может быть не так полезно, если вместо этого вы действительно имеете в виду одно из значений массива.
от вопрос уже есть ответ здесь: Как получить доступ к локальной переменной из другой функции, используя указатели? [/questions/4570366/how-to-access-a-local-variable-from-a-different-function-using-pointers] 9 ответов#include <stdio.h> int ...
Не компилируется в GCC.
у меня есть указатель, который указывает на строковую переменнуюarray of chars, есть ли разница между набором текста: char *name = "name";А также, string name = "name";