Вместо этого сделать просто присвоение указателей: errors = errorsNext;
И освобождение errorsNext уже делать не надо.
Вообще двумерные массивы в таком виде - зло. Лучше выделять память одним большим куском сразу для всего массива. Плюсы:
1.код будет быстрее так как: меньше выделений/освобождений памяти, память для однородных элементов будет выделена в одном блоке, что теоретически увеличит попадания в кэш (хотя применительно к вашему конкретному случаю вряд ли будет большое ускорение из-за кэша).
2.меньше проблем с утечками и проще отлаживать
Минусы:
1.индексация [i][j] работать не будет.
Но это можно обойти перейдя на стиль итераторов.
Или конвертировать указатель в указатель на массив (пример тут). Правда массивов переменной длинны в стандарте С++ нет. Но если вы собираете с помощью gcc/clang с включенными расширениями (по умолчанию) то это то же будет работать. На микросовтовском компиляторе наверняка не соберется.
Вообще, конечно, нужно исопльзовать std::vector для динамических массивов.
ZoriN89, Ок. Тогда ждите ответа от разраба ics-openvpn. Он там вроде регулярно комитит. Или можно попробовать самому отладить и выкатить ему патч, если понадобится. Вам все равно разбираться с его кодом.
Удачи!
На сколько я понимаю ics-openvpn - это и есть официальный OpenVPN Connect.
Как я писал в ответе - все сторонние клиенты будут использовать оригинальный код openvpn, так же как ics-openvpn. Иначе это будет уже не openvpn. По сути клиент для андроид - только графическая оболочка для оригинальной библиотеки.
В вопросе вы пишете, что у вас было плохое качество подключения к интернету из-за чего вы пытались его улучшить довольно странными методами.
Т.е. вы поняли это "на глаз"? Никаких измерений не производили?
В инете полно сайтов, где можно измерить скорость вашего интернета. Лучше всего мерить на нескольких подобных сайтах, тогда картинка будет более объективная. Измерения на каждом производить несколько раз. Потом найти среднее арифметическое скоростей приема и передачи. Если скорости меньше 80% от заявленных оператором в вашем договоре, то стоит трясти оператора, а не винду. Не стоит ждать достижения скорости в 100%, т.к. 20% обычно закладывается на служебный трафик и т.п. Измерения стоит производить днем, т.к. ночью операторы могут снимать какие-то ограничения и ночная скорость может быть больше дневной. Так же скорость приема и передачи обычно бывает разная (но не обязательно). Обычно актуальна скорость приема, но это зависит от того как вы используете интернет.
Если при измерениях скорость нормальная, а на "вашем любимом сайте" не нормальная, то это скорее всего проблема "вашего любимого сайта", а не ваша и вы тут ничего поделать не сможете.
Помните, что в интернете всегда есть минимум 2 стороны и пачка посредников посередине в лице операторов связи, и на каждом этапе могут быть проблемы.
Первая строка отменится после перезагрузки. YungNoob,
autotuning=normal
netsh int set global dca=disabled
netsh int tcp set global netdma=disabled
netsh int tcp set global rss=disabled
Эти отменяют настройки сделанные скриптом, который вы привели в вопросе.
netsh int tcp reset
netsh int ip reset
Эти две все настройки tcp/ip сбрасывают в "по умолчанию".
Если у вас проблемы с WiFi, то маловероятно, что какие-то нстройки винды вам помогут. Ищите причину. Возможно у вас засран эфир - соседи мешают своими точками; слабый сигнал; другие помехи; дохлый роутер; кривой драйвер WiFi адаптера в винде.
Как вы определили что у вас плохое качество? Как это проявляется?
Хотите, чтоб вам помогли опишите проблему в отдельном вопросе.
Фиг знает какие там тонкости есть на макоси, но судя по тексту линковщик не находит библиотеку по стандартным путям. Наверное надо задать ключ -L <путь к библиотеке> при компиляции.
PRIYD, Координаты точек извесны? Подставляйте координаты в формулу.
По ссылке перед примером 2 есть формула в координатах для плоскости, чуть ниже - аналогичная формула для пространства (3D).
В итоге у вас будет известен cos(a), Найдете arccos от него - получите угол в радианах.
Найти угол по часовой стрелке в радианах так: [получный угол в радианах] - 2pi
Вместо этого сделать просто присвоение указателей:
errors = errorsNext;
И освобождение errorsNext уже делать не надо.
Вообще двумерные массивы в таком виде - зло. Лучше выделять память одним большим куском сразу для всего массива. Плюсы:
1.код будет быстрее так как: меньше выделений/освобождений памяти, память для однородных элементов будет выделена в одном блоке, что теоретически увеличит попадания в кэш (хотя применительно к вашему конкретному случаю вряд ли будет большое ускорение из-за кэша).
2.меньше проблем с утечками и проще отлаживать
Минусы:
1.индексация [i][j] работать не будет.
Но это можно обойти перейдя на стиль итераторов.
Или конвертировать указатель в указатель на массив (пример тут). Правда массивов переменной длинны в стандарте С++ нет. Но если вы собираете с помощью gcc/clang с включенными расширениями (по умолчанию) то это то же будет работать. На микросовтовском компиляторе наверняка не соберется.
Вообще, конечно, нужно исопльзовать std::vector для динамических массивов.