The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Проект LLVM развивает средства для безопасной работы с буферами в C++, opennews (?), 06-Окт-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


162. "Проект LLVM развивает средства для безопасной работы с буфер..."  +4 +/
Сообщение от Аноним (129), 07-Окт-22, 02:27 
Не поверишь... Это указатель с гранулярностью размера int.
Ответить | Правка | Наверх | Cообщить модератору

171. "Проект LLVM развивает средства для безопасной работы с буфер..."  –1 +/
Сообщение от Аноним (173), 07-Окт-22, 07:37 

#include <iostream>

using namespace std;

int main()
{
    int notArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int* pointer = notArray;
    cout<<"not array size: "<<sizeof(notArray)<<endl<<"pointer size: "<<sizeof(pointer)<<endl;

    return 0;
}


not array size: 40
pointer size: 8

Если [] указатель, то почему он такой большой?

Ответить | Правка | Наверх | Cообщить модератору

177. "Проект LLVM развивает средства для безопасной работы с буфер..."  –1 +/
Сообщение от Аноним (173), 07-Окт-22, 08:13 
#include <iostream>

using namespace std;

int main()
{
    auto pointerAtNotArray = new int[15];
    cout<<"not array size: "<<sizeof(*pointerAtNotArray)<<" :-("<<endl;
    delete pointerAtNotArray;
    return 0;
}


not array size: 4 :-(
Ответить | Правка | Наверх | Cообщить модератору

178. "Проект LLVM развивает средства для безопасной работы с буфер..."  +/
Сообщение от Аноним (173), 07-Окт-22, 08:16 
И это при том что размер массива сохраняется для оператора delete
Ответить | Правка | Наверх | Cообщить модератору

193. "Проект LLVM развивает средства для безопасной работы с буфер..."  +7 +/
Сообщение от 0x04070407 (?), 07-Окт-22, 11:09 
delete[], учитель
Ответить | Правка | К родителю #177 | Наверх | Cообщить модератору

184. "Проект LLVM развивает средства для безопасной работы с буфер..."  +33 +/
Сообщение от ХрюХрю (?), 07-Окт-22, 08:52 
int notArray[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int* pointer = notArray;
std::cout<<"not array size: " <<sizeof(notArray) << "\n"; // тут в sizeof передан адрес первого элемента массива и sizeof будет считать размер всех элементов массива: 10 элементов по 4 байта == 40 байт
std::cout<<"not array size: " <<sizeof(*notArray) << std::endl; // тут в sizeof передано значение первого элемента массива со значением 1 типа int и размером 4 байта (размер именно элемента массива, а не указателя) (тоже самое что: sizeof(notArray[0]; sizeof(*(notArray+0))
cout<<"pointer size: "<<sizeof(pointer)<<endl; размер указателя в зависимости от битности ОС
Ответить | Правка | К родителю #171 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру