Бляди тоже ок, ага. Войти !bnw Сегодня Клубы

Сегодня познал неиллюзорную разницу между char *foo = "bar"; и char foo[] = "bar";.

#DPDLHQ / @l29ah / 4279 дней назад

а чо, современный компилятор не хуярит по ебалу за первое?
#DPDLHQ/EVM / @muromec / 4279 дней назад
@muromec Нет. И я немало кода такого видел и писал.
#DPDLHQ/SKF / @l29ah --> #DPDLHQ/EVM / 4279 дней назад
@muromec а почему должен?
#DPDLHQ/RVF / @stiletto --> #DPDLHQ/EVM / 4279 дней назад
алсо, который вариант выделяется на стеке, а который нет?
#DPDLHQ/3IQ / @stiletto / 4279 дней назад
@stiletto Оба выделяются в сегменте данных, только первый ещё может выделиться на стеке в виде указателя, если компилятор тупой.
#DPDLHQ/U89 / @l29ah --> #DPDLHQ/3IQ / 4279 дней назад
А где хранится каждый из вариантов? Стек, куча, data?
#DPDLHQ/BMK / @etw / 4279 дней назад
@etw первый на стеке, второй в data
#DPDLHQ/IBI / @muromec --> #DPDLHQ/BMK / 4279 дней назад
а мне все говорят, что char[] выделится на стеке
#DPDLHQ/QBL / @stiletto / 4279 дней назад
@stiletto (в смысле содержимое)
#DPDLHQ/ZZ5 / @stiletto --> #DPDLHQ/QBL / 4279 дней назад
@stiletto да. char[] на стеке - потомушо локальная переменная. местами перепутал
#DPDLHQ/XUH / @muromec --> #DPDLHQ/QBL / 4279 дней назад
@muromec char* тоже локальная переменная, лол только она будет указателем в сегмент данных, а char[] - в стек
#DPDLHQ/331 / @stiletto --> #DPDLHQ/XUH / 4279 дней назад
@stiletto char* - это указатель, а то что ему присваевается живет в дата а у char[] и данные и указатель - на стеке
#DPDLHQ/75I / @muromec --> #DPDLHQ/331 / 4279 дней назад
@muromec > а у char[] и данные и указатель - на стеке Что за хуйню ты несёшь?
#DPDLHQ/M3X / @l29ah --> #DPDLHQ/75I / 4279 дней назад
@stiletto >For instance, the string defined by char s[] = "hello world" in C and a C statement like int debug=1 outside the "main" would be stored in initialized read-write area. Нашла статью в вики, и там говорится, что это не так.
#DPDLHQ/CUI / @etw --> #DPDLHQ/331 / 4279 дней назад
@l29ah хуй соси, придурь. ну или сходи проверь, какой у этой хуйни адрес будет
#DPDLHQ/4PJ / @muromec --> #DPDLHQ/M3X / 4279 дней назад
Как-то так: cat shit.c #include <stdio.h> char *shit() { char *a = "i suck cocks"; return a; } char *fuck() { char a[] = "i suck cocks"; return a; } void crapstack(int n) { if (n>0) crapstack(n-1); } int main(int argc, char *argv[]) { char *c; c = shit(); crapstack(10); printf("%s\n",c); c = fuck(); crapstack(10); printf("%s\n",c); return 0; } ./shit i suck cocks iô¶E
#DPDLHQ/KJL / @stiletto / 4279 дней назад
@stiletto ачо, просто посмотреть на %p нельзя было?
#DPDLHQ/MEM / @muromec --> #DPDLHQ/KJL / 4279 дней назад
@muromec так живописнее
#DPDLHQ/WDN / @stiletto --> #DPDLHQ/MEM / 4279 дней назад
@stiletto пидару лишь бы уронить все в корку
#DPDLHQ/AJ7 / @muromec --> #DPDLHQ/WDN / 4279 дней назад
@muromec к тому же над адресом придется еще думать, куда эти закорючки указывают блеать
#DPDLHQ/X7X / @stiletto --> #DPDLHQ/MEM / 4279 дней назад
@stiletto хули тут думать - определил char x; и посмотрел на &x - оно точно на стеке
#DPDLHQ/LTS / @muromec --> #DPDLHQ/X7X / 4279 дней назад
алсо, оп-пидар скоро еще узнает про static и ваще обосрется, я так думаю.
#DPDLHQ/6VW / @muromec / 4279 дней назад
@muromec cat shit.c|awk '{print(" "$0);}' #include <stdio.h> char *shit() { char *a = "i suck cocks"; return a; } char *fuck() { char a[] = "i suck cocks"; return a; } void crapstack(int n) { if (n>0) crapstack(n-1); } int main(int argc, char *argv[]) { char *c; c = shit(); crapstack(10); printf("%p\n",&c); printf("%p %s\n",c,c); c = fuck(); crapstack(10); printf("%p %s\n",c,c); return 0; } ./shit 0xbfd7b2ac 0x80485c8 i suck cocks 0xbfd7b27b ¿ suck co¦¥ Eô¶E{²׿{²׿5 E сучка я сделал это раньше чем увидел этот коммент
#DPDLHQ/UI4 / @stiletto --> #DPDLHQ/LTS / 4279 дней назад
Ппц загоны.
#DPDLHQ/Y81 / @ap / 4279 дней назад
@muromec Можно тупо скомпилять с -S и увидеть там **MEMCPY**.
#DPDLHQ/HPJ / @mieye --> #DPDLHQ/MEM / 4278 дней назад
@muromec > MEM
#DPDLHQ/39F / @ap --> #DPDLHQ/MEM / 4278 дней назад
@etw Константа в обоих случаях будет в .data (потому что сразу в стеке её не сделаешь), но при заходе в функцию, будет скопирована в стек.
#DPDLHQ/CSJ / @mieye --> #DPDLHQ/CUI / 4278 дней назад
@mieye Но если она влазит в 4 байта, то может быть запихнута сразу в movl.
#DPDLHQ/E9P / @mieye --> #DPDLHQ/CSJ / 4278 дней назад
@mieye У тебя калькулятор вместо писюка.
#DPDLHQ/DNK / @l29ah --> #DPDLHQ/E9P / 4278 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.