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

Как работает динамическое выделение памяти под объект? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Возврат объекта класса из функции http://www.cyberforum.ru/cpp-beginners/thread808745.html
Имеется следующий код: #include "stdafx.h" #include <iostream> using namespace std; /*Задача: Определить класс список элементов. В определение класса включить два конструктора для определения списка по его размеру и путем копирования другого списка. Определить операции над списком:
C++ Описать класс Матрица Описать класс Матрица. C++ http://www.cyberforum.ru/cpp-beginners/thread808735.html
C++ Производные
Привет всем! У меня такая проблема: надо написать программку, которая бы выдала вид прозводной, например, на вход подается f=y*x-2*y^2, необходимо производную по у написать, на выходе должно получиться: df/dy = -4*y с чего начать???? какие методы, алгоритмы можете посоветовать? Помогите!
C++ Непонятки со списком
Нашёл код в интернете и немного не понимаю его в некоторых местах. Объясните мне пожалуйста, зачем в коде вот тут: strcpy(spis->data,"0"); // инициализируем его данными spis->next = NULL; // следующий элемент - NULL start = spis; // запоминаем начало 1) зачем ставить spis->next = NULL; ? Ведь он потом всё равно ставится так spis->next = new Node; Как бы не...
C++ поиск обратной матрицы http://www.cyberforum.ru/cpp-beginners/thread808728.html
дана матрица A(почти матрица гильберта-отличается только 1-ая строчка): 1 1 1 1... 1/2 1/3 1/4 1/5... 1/3 1/4 1/5 1/6... ............................. нужно найти обратную к данной матрице, используя LU- разложение матрицы(разложение на нижнетреугольную и верхнетреуг.) т.е. в кратце как-то так: для поиска обратной матрицы нужно решить уравнение А*Х=Е(единичная...
C++ Найти количесво четных элементов матрицы Нужно найти количество четных элементов матрицы в каждой строчке. Написала код, по идее ответ должен быть таким сумма=1,сумма=2,сумма=3. а вылезает сумма=1,сумма=1,сумма=1 помогите, пожалуйста, найти ошибку. #include <stdio.h> подробнее

Показать сообщение отдельно
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
15.03.2013, 12:34     Как работает динамическое выделение памяти под объект?
Цитата Сообщение от mzarb Посмотреть сообщение
Я почему-то думал, что new возвращает rvalue, так как нет возможности обратится к этой памяти или применить операцию взятия адреса, по крайней мере до присваивания указателю, по этому откинул версию "объект.функция()".
Не важно, что возвращает new. Представь, что внутри него, грубо, реализован такой элементарный механизм:
1. вызов системной функции для выделения памяти
2. вызов конструктора для выделенного блока памяти
3. возвращение адреса памяти тебе в программу.
все, ничего сложного выдумывать не надо. Никаких rvalue.
Цитата Сообщение от mzarb Посмотреть сообщение
А new возвращает адрес выделенной памяти или все же указатель(без имени или с именем) на эту память?
Значение указателя и есть адрес
Цитата Сообщение от mzarb Посмотреть сообщение
И что будет делать конструктор, он инициализирует память нулями ?
Кто инициализирует память нулями? Конструктору, опять же, не важно, что лежит в памяти в общем случае. Он знает смещения, ему этого достаточно.
Цитата Сообщение от mzarb Посмотреть сообщение
И есть ли у этого объекта(адреса) такой же доступ к полям класса как и у обычных объектов
Ниче не понял. У нас разве необычный объект? Правда доступа и поля класса - это только языковые понятия. После компиляции они исчезают. Как и сами объекты.
Цитата Сообщение от mzarb Посмотреть сообщение
то есть можно ли будет в конструкторе писать адрес.поле и присваивать им аргументы если есть?
Почитай про this. Считай, что вот "оно" и есть переданный твоим функциям-членам скрытый указатель.
Цитата Сообщение от mzarb Посмотреть сообщение
Если да, то почему адрес туда подставляется после типа?
Адрес не после типа, а после new в скобках.

Добавлено через 8 минут
Цитата Сообщение от mzarb Посмотреть сообщение
указатель(без имени или с именем)
Что значит "вернуть с именем"?
 
Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru