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

realloc - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу определения минимального среди 5 введенных целых чисел. http://www.cyberforum.ru/cpp-beginners/thread288292.html
Плз помогите составить текст программы,на Си Обход. Составить программу определения минимального среди 5 введенных целых чисел.
C++ перегрузка виртуальных функций please HELP! перегружаю виртуальную функцию в абстрактном классе. class ONE { virtual std::string FUN(const std::string& value); virtual ~ONE(); } http://www.cyberforum.ru/cpp-beginners/thread288286.html
Массивы и указатели C++
Здравствуйте! Задача по теме указатели.Есть 2 массива размер которого получаем от пользователя. Написать функцию которая получает 2 массива и создает третий массив, размером первый + второй. В main эти значения показываем. Спасибо! Делаю и делаю....:), но понял что я не близок к истине :( #include "stdafx.h" #include <iostream> using namespace std;
C++ Структуры
Сформировать массив, содержащий сведения о количестве изделий категорий A,B,C, собранных рабочим за месяц. Структурный тип содержит поля: фамилия сборщика, наименование цеха, количество изделий по категориям, собранных рабочим за месяц. Считая заданными значения расценок SA, SB, SC за выполненную работу по сборке единицы изделия категорий A, B, C, выдать на печать следующую информацию: -общее...
C++ постфиксный, и префиксный экземпляры оператора приращения в чем разница http://www.cyberforum.ru/cpp-beginners/thread288254.html
постфиксный, и префиксный экземпляры оператора приращения в чем разница? i++ ++i ??
C++ добавить элементы в очередь. найти максимальный элемент. Нужна Ваша помощь! пожалуйста, помогите доработать программу, а то у меня совсем ничего не получается(( задача такая: в файле лежат элементы. добавить в очередь. найти максимальный элемент. Спасибо за помощь)) #include <iostream> #include <fstream> using namespace std; void pushQueue (Queue *&h, Queue *t, int i) { Queue *p=new Queue; p->inf=i; подробнее

Показать сообщение отдельно
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
04.05.2011, 13:29
Дело обстоит так. Рассмотрим строчку:
C++
1
buffer[_size] = val;
Так вот, имеем типичный конструктор присваивания. То есть объекту типа string
C++
1
buffer[_size]
мы присваиваем значение другого объекта типа string; этот объект val
Но вся фишка в том, что объекта
buffer[_size] просто-напросто нет! Потому и возникает ошибка! Под него просто выделена память и всё на этом.
(Важно: конструктор присваивания присваивает значение в уже ИМЕЮЩИЙСЯ объект, в отличие от конструктора копирования.) А realloc объекта не создаёт, а просто выделяет под него место, в отличие от new! Поэтому тут надо работать с new

Небольшой опыт в домашней лаборатории сие подтверждает
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdlib.h>
#include <stdio.h>
 
class List
{
public:
        List() {printf ("ttttttttttttttt\n");};
};
 
int main () {
 
 
 
 List* p=(List*) malloc(sizeof(k));
 //List* p=new List[(sizeof(k))];
 
 getchar ();
}
Поочерёдно расскоментируя а закомментировывая инструкции выделения памяти, можно обнаружить, что строчка "ttttttttttttttttttttttttt" при одном запуске программы появляется, а при другом нет. То есть в одном случае срабатывает конструктор-объект создаётся (вариант с new) а в другом случае не срабатывает конструктор- объект не создаётся (вариант malloc)

А значит, во втором случае выражение
C++
1
2
List k;
p[0]= k;
будет неправильным, что и требовалось доказать.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru