Форум программистов, компьютерный форум CyberForum.ru

Указатель на строковую константу - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание обьекта_ у меня что-то с синтаксом? http://www.cyberforum.ru/cpp-beginners/thread949914.html
#include <string> #include <iostream> // для объекта cout using namespace std; class Cat { public: Cat(int initialAge=5); ~Cat(); int GetAge() const; // метод доступа const функция доступа к данным-членам класса без права их изменения
C++ Вектор в файл и из файла Доброго времени суток ! Есть вектор наполненный каким-то количеством указателей. Также есть класс ContainerWork, который производит с этим вектором какие-то действия. Два метода из них должны записывать в файл этот вектор и читать его из файла. Пытался таким образом: void ContainerWork::save_info() { FILE *f; if ((f = fopen("file.bin", "wb")) == NULL) http://www.cyberforum.ru/cpp-beginners/thread949906.html
Тема для курсовой работы C++
Добрый вечер. Нас сегодня обрадовали курсачом, а точнее так: делать его будем со второго полусеместра, но я задумываюсь над ним заранее. Тему курсача надо обозначить примерно в субботу след. недели, или ещё неделю. Пришла в голову такая идея: у нас в классе компы связаны локальной сетью, можно ли написать консольный\WFApp вариант чата (клиент - сервер), без множества наворотов, тупо...
Машинное представление типов float и struct C++
Србственно, задача с вещестенными более-менее понятна, так как вручную все это делается более-менее легко. А вот как записать все это в коде, и при этом сделать его максимально понятным и простым (поймите правильно, с++ учим недавно)? Но это ещё не вся беда! Если с представлениями чисел разобраться можно, то как вывести представление структуры -- я не понимаю. Искренне прошу помочь хоть...
C++ Склеивание трех и более массивов http://www.cyberforum.ru/cpp-beginners/thread949896.html
Вопрос заключается в следующем: Есть 4 разных одномерных массива char * Name1 = {"Имя1", "Имя2," "Имя3", "Имя4", "Имя5",}; char * Name2 = {"Имя1", "Имя2," "Имя3", "Имя4", "Имя5",}; char * Name3 = {"Имя1", "Имя2," "Имя3", "Имя4", "Имя5",};
C++ Библиотека наподобие HtmlAgilityPack Подскажите пожалуйста, есть что-нибудь наподобие такой для билдера? libxml2 не предлагать! это не то пальто. подробнее

Показать сообщение отдельно
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
08.09.2013, 02:02     Указатель на строковую константу
ладно, вообщем как я люблю такие самоуверенные выводы

C++
1
2
3
4
5
6
7
8
#include <cstdio>
 
int main ()
{
    int a = 10;
    int * b = new int (100);
    printf ("%s", "hello world");
}
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Breakpoint 1, main () at 4.cpp:5               
5           int a = 10;                        
 
(gdb) x/a &a                                   
0x7fffffffde64: 0x7fff                                     
(gdb) n                                        
6           int * b = new int (100);           
(gdb) n                                        
7           printf ("%s", "hello world");      
(gdb) p/x b                                    
$3 = 0x602010                                  
(gdb) disassemble                              
Dump of assembler code for function main():                 
0x000000000040068c <main()+0>:  push   %rbp                 
0x000000000040068d <main()+1>:  mov    %rsp,%rbp            
0x0000000000400690 <main()+4>:  sub    $0x10,%rsp           
0x0000000000400694 <main()+8>:  movl   $0xa,-0xc(%rbp)      
0x000000000040069b <main()+15>: mov    $0x4,%edi            
0x00000000004006a0 <main()+20>: callq  0x400590 <_Znwm@plt> 
0x00000000004006a5 <main()+25>: movl   $0x64,(%rax)         
0x00000000004006ab <main()+31>: mov    %rax,-0x8(%rbp)      
0x00000000004006af <main()+35>: mov    $0x4007c4,%esi       
0x00000000004006b4 <main()+40>: mov    $0x4007d0,%edi       
0x00000000004006b9 <main()+45>: mov    $0x0,%eax            
0x00000000004006be <main()+50>: callq  0x400560 <printf@plt>
0x00000000004006c3 <main()+55>: mov    $0x0,%eax            
0x00000000004006c8 <main()+60>: leaveq                      
0x00000000004006c9 <main()+61>: retq                        
End of assembler dump.                                      
(gdb) x/s 0x4007c4                     
                                       
0x4007c4:        "hello world"         
(gdb) x/s 0x4007d0                     
                                       
0x4007d0:        "%s"                  
(gdb) info proc mappings                                                                                           
process 27712                                                                                                      
...                                                                              
Mapped address spaces:                                                                                             
                                                                                                                   
          Start Addr           End Addr       Size     Offset objfile                                              
            0x400000           0x401000     0x1000          0                             /home/*/a.out    
            0x600000           0x601000     0x1000          0                             /home/*/a.out    
            0x601000           0x602000     0x1000     0x1000                             /home/*/a.out    
            0x602000           0x623000    0x21000          0                                   [heap]             
      0x7ffff7308000     0x7ffff745d000   0x155000          0                      /lib64/libc-2.11.1.so           
      0x7ffff745d000     0x7ffff765c000   0x1ff000   0x155000                      /lib64/libc-2.11.1.so           
      0x7ffff765c000     0x7ffff7660000     0x4000   0x154000                      /lib64/libc-2.11.1.so           
      0x7ffff7660000     0x7ffff7661000     0x1000   0x158000                      /lib64/libc-2.11.1.so           
      0x7ffff7661000     0x7ffff7666000     0x5000          0                                                      
      0x7ffff7666000     0x7ffff767c000    0x16000          0                      /lib64/libgcc_s.so.1            
      0x7ffff767c000     0x7ffff787b000   0x1ff000    0x16000                      /lib64/libgcc_s.so.1            
      0x7ffff787b000     0x7ffff787c000     0x1000    0x15000                      /lib64/libgcc_s.so.1            
      0x7ffff787c000     0x7ffff787d000     0x1000    0x16000                      /lib64/libgcc_s.so.1            
      0x7ffff787d000     0x7ffff78d2000    0x55000          0                      /lib64/libm-2.11.1.so           
      0x7ffff78d2000     0x7ffff7ad1000   0x1ff000    0x55000                      /lib64/libm-2.11.1.so           
      0x7ffff7ad1000     0x7ffff7ad2000     0x1000    0x54000                      /lib64/libm-2.11.1.so           
      0x7ffff7ad2000     0x7ffff7ad3000     0x1000    0x55000                      /lib64/libm-2.11.1.so           
      0x7ffff7ad3000     0x7ffff7bc3000    0xf0000          0                     /usr/lib64/libstdc++.so.6.0.10   
      0x7ffff7bc3000     0x7ffff7dc2000   0x1ff000    0xf0000                     /usr/lib64/libstdc++.so.6.0.10   
      0x7ffff7dc2000     0x7ffff7dc9000     0x7000    0xef000                     /usr/lib64/libstdc++.so.6.0.10   
      0x7ffff7dc9000     0x7ffff7dcb000     0x2000    0xf6000                     /usr/lib64/libstdc++.so.6.0.10   
      0x7ffff7dcb000     0x7ffff7dde000    0x13000          0                                                      
      0x7ffff7dde000     0x7ffff7dfd000    0x1f000          0                      /lib64/ld-2.11.1.so             
      0x7ffff7fbe000     0x7ffff7fc2000     0x4000          0                                                      
      0x7ffff7ffa000     0x7ffff7ffb000     0x1000          0                                                      
      0x7ffff7ffb000     0x7ffff7ffc000     0x1000          0                           [vdso]                     
      0x7ffff7ffc000     0x7ffff7ffd000     0x1000    0x1e000                      /lib64/ld-2.11.1.so             
      0x7ffff7ffd000     0x7ffff7ffe000     0x1000    0x1f000                      /lib64/ld-2.11.1.so             
      0x7ffff7ffe000     0x7ffff7fff000     0x1000          0                                                      
      0x7ffffffea000     0x7ffffffff000    0x15000          0                           [stack]                    
  0xffffffffff600000 0xffffffffff601000     0x1000          0                   [vsyscall]                         
(gdb) info registers                                 
rax            0x602010 6299664                      
rbx            0x4006e0 4196064                      
rcx            0x7ffff7661e60   140737344052832      
rdx            0x602000 6299648                      
rsi            0x21000  135168                       
rdi            0x602000 6299648                      
rbp            0x7fffffffde70   0x7fffffffde70       
rsp            0x7fffffffde60   0x7fffffffde60       
r8             0x7ffff7661e60   140737344052832      
r9             0x0      0                            
r10            0x887b0  559024                       
r11            0x206    518                          
r12            0x4005a0 4195744                      
r13            0x7fffffffdf40   140737488346944      
r14            0x0      0                            
r15            0x0      0                            
rip            0x4006af 0x4006af <main()+35>         
eflags         0x206    [ PF IF ]                    
cs             0x33     51                           
ss             0x2b     43                           
ds             0x0      0                            
es             0x0      0                            
fs             0x0      0                            
gs             0x0      0                            
fctrl          0x37f    895                          
fstat          0x0      0                            
ftag           0xffff   65535                        
fiseg          0x0      0                            
fioff          0x0      0                            
foseg          0x0      0                            
fooff          0x0      0                            
fop            0x0      0                            
mxcsr          0x1f80   [ IM DM ZM OM UM PM ]
КО говорит, что "hello wolrld" выделен в заранее подготовленной области памяти 0x4007c4 лежит в ( 0x400000 0x401000 )
а, судя по адресу и стековым регистрам - на стеке
b - в хипе (0x602010 лежит между 0x602000 0x623000, что помечено как хип)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru