@ProCxx

Страница 1109 из 2477
Berkus
19.07.2017
17:53:28
#holywar

Group Butler [beta]
19.07.2017
17:53:28
#holywar
С таким заявлением вам лучше сюда: pro.cxx.holywars

Berkus
19.07.2017
17:53:34
идите в холиварную

Alexey
19.07.2017
17:55:12
а есть какой-нибудь блог с описанием изменений?

Google
Berkus
19.07.2017
17:55:37
джетбрейнс всегда публикует чейнджлоги

Alexander
19.07.2017
18:07:25
https://cmake.org/cmake/help/v3.9/release/3.9.html

Azoyan
19.07.2017
20:01:20
Парни, статическую память можно засрать?

В смысле компилятор под статическую память без ограничений выделяет?

Александр
19.07.2017
20:21:49
Если я не ошибаюсь, то статическая(автоматическая) память такая же динамическая, только выделаяется при вхождении область видимости для всего, что есть внутри последней, а освобождается после

Происходит это автоматически, а не ручками программиста, как с динамической

Azoyan
19.07.2017
20:28:34
разве компилятор заранее не выделяет под статические переменные память?

Matwey
19.07.2017
20:29:23
Ты имеешь ввиду секцию .data?

Или они не там лежат?

Azoyan
19.07.2017
20:33:45
https://godbolt.org/g/6WvnkW

Pavel
19.07.2017
20:39:32
https://godbolt.org/g/6WvnkW
https://stackoverflow.com/questions/2780100/is-there-any-limit-on-stack-memory

Google
cyberzx
19.07.2017
20:40:00
Azoyan
19.07.2017
20:40:26
я про переменные объявленные static

Александр
19.07.2017
20:40:42
Да, про стек, я и не говорил, что его нельзя переполнить)

Я к этому и вёл

Matwey
19.07.2017
20:42:44
https://stackoverflow.com/questions/12126103/maximum-size-of-bss-and-data

cyberzx
19.07.2017
20:46:15
я про переменные объявленные static
Зависит от ABI. Я знаю в AMD64 (aka System V) есть секции, которые не ограничены в размерах (.ldata, .lrodata, .lbss)

Azoyan
19.07.2017
20:47:26
короче, миллион строк в статик не получится засунуть

Matwey
19.07.2017
20:47:52
Почему не получится? Я вот давеча целый zip-файл туда положил;

cyberzx
19.07.2017
20:47:56
это сколько в мегабайтах?

Azoyan
19.07.2017
20:48:27
ну словарь орфографический

Berkus
19.07.2017
20:49:02
я про переменные объявленные static
static складывается в .data, там в целом нет ограничений кроме архитектурных

короче, миллион строк в статик не получится засунуть
легко, сможешь ли ты запустить такой экзешник - вопрос к оси

но если там несколько сотен мегабайт, то без проблем

cyberzx
19.07.2017
20:50:20
правда запускаться будет долго и компилятор может немного опухнуть

Azoyan
19.07.2017
20:50:30
Ок, а потом затраты на доступ по индексам такие же дешёвые как на стеке?

Berkus
19.07.2017
20:51:25
ну да, это доступ к обычной памяти - cache locality может пострадать если там много

Azoyan
19.07.2017
20:51:55
но если друг за другом проходить локальность кеша будет хорошей?

Berkus
19.07.2017
20:53:04
не особо, в кэщ это все не влезет, надо будет делать префетч

ты помоему в X-y проблему уперся

что сделать то хочешь?

Google
Azoyan
19.07.2017
20:53:44
я упарываюсь просто ) хотел засрать статик

а что за Х-у проблема?

Berkus
19.07.2017
20:54:19
#xyproblem

алоэ ботэ

Azoyan
19.07.2017
20:54:29
икс игрик?

Berkus
19.07.2017
20:54:36
в супапро было ща

Azoyan
19.07.2017
20:55:27
ладно, я не понимаю. Ещё вопрос вот у нас есть struct W { const char* c = "abc"; };

Berkus
19.07.2017
20:55:35
http://mywiki.wooledge.org/XyProblem

Azoyan
19.07.2017
20:55:40
abc лежат в статической памяти, правильно?

cyberzx
19.07.2017
20:55:54
да

Berkus
19.07.2017
20:55:58
abc это сишная строка, так что да

Azoyan
19.07.2017
20:56:12
далее мы пишем static W a, b, c, d, e, ...

Azoyan
19.07.2017
20:56:22
Они тоже в статической памяти

Berkus
19.07.2017
20:56:50
но ссылаются на одну и ту же строку обычно, т.к. она константная

Azoyan
19.07.2017
20:56:52
структуры в статической памяти, поле структуры в статической памяти

ок

убираем const =))

struct W { char* c = "abc"; };

Berkus
19.07.2017
20:57:47
получаем варнинг, ставим его обратно

cyberzx
19.07.2017
20:57:51
в С++ так нельзя

Google
cyberzx
19.07.2017
20:57:54
в С можно

Azoyan
19.07.2017
20:58:20
ок, давайте тогда думать, что мы в Си

Berkus
19.07.2017
20:58:26
ты это можешь ведь локально на компилере проверить, у тебя всяко он есть

cyberzx
19.07.2017
20:58:35
Компилятор вполне может положить эти данные в какую-нибудь .ro секцию

Azoyan
19.07.2017
20:58:45
я ассемблерный код не умею читать :(

https://godbolt.org/g/C38mki

Berkus
19.07.2017
20:59:24
warning: conversion from string literal to 'char *' is deprecated [-Wc++11-compat-deprecated-writable-strings]

Admin
ERROR: S client not available

Berkus
19.07.2017
20:59:28
ну варнинг то понятный

cyberzx
19.07.2017
20:59:38
а чем тебя не устаривает? struct W { char c[] = "abc"; }

Azoyan
19.07.2017
21:00:29
пока нормально тоже, устраивает

Berkus
19.07.2017
21:00:38
movabs rax, .L.str

оно всё равно берет только одну строку, и пишет тебе варнинг

cyberzx
19.07.2017
21:01:34
в первом случае в структуре лежит указатель, а во втором - массив

Berkus
19.07.2017
21:01:43
тоже указатель

ты тип char[] знаешь? это char*

Azoyan
19.07.2017
21:02:35
ты тип char[] знаешь? это char*
только создаётся на стеке

Berkus
19.07.2017
21:03:54
угу и инициализация сразу в 4 раза менее эффективная по командам и на порядок по доступу к памяти

mov ax, word ptr [.L.str] mov word ptr [rdi], ax mov cl, byte ptr [.L.str+2] mov byte ptr [rdi + 2], cl

Google
Berkus
19.07.2017
21:04:27
так себе

Azoyan
19.07.2017
21:04:28
а чем тебя не устаривает? struct W { char c[] = "abc"; }
http://cpp.sh/7c6te в случае с char* я могу значение строки менять, в случае с char[] ошибка компиляции

cyberzx
19.07.2017
21:04:40
ты тип char[] знаешь? это char*
В смысле? Котлеты отдельно, мухи отдельно. T[] это массив http://en.cppreference.com/w/cpp/language/array Если размер опущен, то он берётся из инициализатора

только создаётся на стеке
Не на стеке. Создаётся он там, где создаётся объект. На хипе или в статической памяти

Azoyan
19.07.2017
21:05:20
стоп стоп пацаны, вы отходите от темы

http://cpp.sh/7c6te

cyberzx
19.07.2017
21:06:01
<source>:4:14: error: array bound cannot be deduced from an in-class initializer
ну это когда инициализируется в классе. напиши там размер и он выведется

Azoyan
19.07.2017
21:06:02
у меня возникает вопрос. куда записалось "bca"?

точнее, как выглядит наша память

شمويل
19.07.2017
21:07:04
посоветуйте средства разработки под плюсы в мак ос

Azoyan
19.07.2017
21:08:17
Статическая память struct { указатель на статическую память "аа" }

далее берём, по указателю на статическую область на "аа", переписываем туда "bca"

где это всё? что происходит?

Pavel
19.07.2017
21:10:16
ты ни чего не переписываешь, у тебя просто char* word ссылается на другой кусок памяти

Berkus
19.07.2017
21:10:17
شمويل
19.07.2017
21:10:44
спс

Страница 1109 из 2477