Ловите идиота. Создал структуру на стеке. В ней указатель и массив. Указатель внутри массива. Потом скопировал структуру в коллекцию. Итого массов скопировался ок а указатель теперь указывает куда то на мусор в стеке
Используйте дети индексы внутри массива
char, signed char 16 bits pointers (data) small memory mode 16 bits large memory mode 23 bits pointers (function) 24 bits long long 40 bits Note: C55x Byte is 16 Bits By ISO C definition, the size of operator yields the number of bytes required to store an object. ISO further stipulates that when sizeof is applied to char, the result is 1. Since the C55x char is 16 bits (to make it separately addressable), a byte is also 16 bits. This yields results you may not expect; for example, sizeof (int) == 1 (not 2). C55x bytes and words are equivalent (16 bits).
С лора https://www.linux.org.ru/forum/development/16872850?cid=16885451
Сегодня в рубрике "няшная сишка" следующий код:
printf("%lf %d\n", samples_shift, -samples_per_carrier_period);
assert(samples_shift >= -samples_per_carrier_period);
выводит следующее:
1.000000 -10
ampliphase-fl2k: ampliphase-fl2k.c:79: generate_shifted_carrier: Assertion `samples_shift >= -samples_per_carrier_period' failed.
Собирается gcc-11.2.1_p20220115 с -Wall -Werror без проблем. Кто угадал в чём ошибка - тот молодец^Wэксперт сишки.
https://www.opennet.ru/opennews/art.shtml?num=56580
> Так как счётчик аргументов не проверялся на соответствие фактическому содержимому массива и полагалось, что он всегда больше 1, в случае передачи процессу пустого массива argv, что допускает функция execve в Linux, pkexec воспринимал значение NULL как первый аргумент (имя процесса), а следующую за пределами буфера память, как далее идущее содержимое массива. Проблема в том, что следом за массивом argv в памяти размещается массив envp, содержащий переменные окружения.
> Получив значение argv[1], pkexec пытается с учётом файловых путей в PATH определить полный путь к исполняемому файлу и записать указатель на строку с полный путём обратно в argv[1]