Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C# Вызов функции из библиотеки по функци из БД INTERBASE
В интербейсе существует указанная ниже функция, как сделать такой же вызов на С# через dllimport. На чем написана библиотека не знаю. DECLARE EXTERNAL FUNCTION CALCMIXCOUNT CHAR(16), ... По идее так private static extern int CalcMixCount(string s1, string s2, string s3, string s4);Единственное стоит уточнить размер типа INTEGER в INTERBASE. Если 4 байта, то в вышеприведенном...
C# Есть ли библиотека для работы с Subversion на C#? https://www.cyberforum.ru/ csharp-beginners/ thread502735.html
Пудскажите плс. есть ли библиотека для работы с Subversion на C#. http://www.softec.st/en/OpenSource/ClrProjects/SubversionSharp/SubversionSharp.html
C# Чтение и запись в файл русского текста FileInfo persons = new FileInfo(@"C:InetpubwwwrootWebApplication3db1.xml"); StreamReader reader = persons.OpenText(); StreamWriter writer = new... StreamReader reader = new StreamReader((@"C:InetpubwwwrootWebApplication3db1.xml", Encoding.GetEncoding("windows-1251")); https://www.cyberforum.ru/ csharp-beginners/ thread502883.html C# ADO.Net и клиент – серверное приложение https://www.cyberforum.ru/ csharp-beginners/ thread502624.html
Привет всем!! Вот хочу перейти с делфи на C#, дали задание сделать клиент – серверную приложение. Я прочитал пару дней про ADO.Net и столкнулся с такой проблемой: ADO.Net использует Connected mode... Не хочу глубоко рассуждать, скажу свое видение не глядя в документацию и в коды! Сам писал такое приложение и тоже думал сделать чтобы изменения отображались в реальном времени. Но потом оставил эту...
C# Как преобразовать Double в Decimal? https://www.cyberforum.ru/ csharp-beginners/ thread502890.html
Все очень просто Convert.ToDouble(value) Пытаюсь преобразовать Double в Decimal: System.Convert.ToDecimal(num), а она говорит: "Value was either too large or too small for a Decimal". Во всех расчетах используется Double - только при...
C# Какие компиляторы С лучше? https://www.cyberforum.ru/ csharp-beginners/ thread502474.html
Кто каким пользуется? И почему имено етим? Какой из кмпиляторов быстрее, надежней, генерирует меньший код и так далие? Поделитесь мыслями? Если учесть тему форума (Программирование на C#), то тут компилятор только один - csc.exe. Если же имеются ввиду компиляторы С++, то это уже тема другой ветки форума.
C# Есть ли в С# встроеные библиотеки регулярных выражений? https://www.cyberforum.ru/ csharp-beginners/ thread502954.html
Есть ли в С# встроеные библиотеки регулярных выражений? Есть. Смотри классы в пространстве имен System.Text.RegularExpressions
C# Кто работал с библиотекой pcre (регулярные выражения) https://www.cyberforum.ru/ csharp-beginners/ thread502575.html
Разкажите как установить? XXXXXXX - нет никакого смысла постить вопросы по C/C++ в форум по C#. Это совершенно другой язык программирования.
C# Есть ли аналог set из STL в .NET? Кто нидь знает есть ли аналог set из STL в .NET? set - это отсортированный контейнер с уникальными элементами Один из этих классов по идее: System.Collections.Hashtable System.Collections.Specialized.HybridDictionary System.Collections.Specialized.ListDictionary https://www.cyberforum.ru/ csharp-beginners/ thread502902.html C# OleDB подключение к базе на сервере Есть клиент с отдельной программой на своей машине, и есть база данных на сервере. Клиент должен подключатся к этой базе. Я делаю подключение так: string conn =... Расшарь папку на сервере и указывай сетевой путь в строке подключения. https://www.cyberforum.ru/ csharp-beginners/ thread502891.html
C# Простая арифметическая операция на калькуляторе
Решил вот написать простенький калькулятор... Это моя первая программа на C#, поэтому возникают глупые вопросы. В настоящий момент у меня есть текстовое поле и четыре кнопки: "1","2","+","=".... Вот глянь http://progs.biz/csharp/win/lessons/001.aspx
Максимальный размер программ выделяемый C# C#
программам написанным на С выделяется максимальный размер 4 гбайта. Этот размер можно изменить но для этого нужны дополнительные действия А сколько максимально выделяется для прог на С# и можно... Я думаю размер зависит от оперативной и виртуальной памяти
86 / 62 / 69
Регистрация: 15.03.2007
Сообщений: 6,906
20.05.2012, 14:25 0

Работа с памятью - C# - Ответ 2728571

20.05.2012, 14:25. Показов 2425. Ответов 2
Метки (Все метки)

Ответ

Цитата Сообщение от GOster
Т.е. объект B - это фактически ссылка на какое-то поле объекта A.
Нет! Переменная B хранит адрес объекта класса AnotherObj в управляемой куче.

Цитата Сообщение от GOster
Но фактически возвращает ссылку на некоторое поле объекта A.
Опять же - нет. Возвращается указатель. Таким образом объект A и переменная B хранят указатель на один и тот же участок в куче.

Цитата Сообщение от GOster
Получается, что после выхода за область видимости функции, объект A не может быть уничтожен, т.к. на него есть ссылка. Таким образом, если объект A занимает много памяти, мы просто теряем эту память, так как нам не нужен весь объект, а нужно лишь одно его поле.
Яркий пример неправильного вывода при исхождении из неправильной посылки. Объекты A и B в общем случае никак не связаны. То есть если объект B не удерживает ссылку на родительский объект А, то A может быть спокойно уничтожен, а B будет продолжать жить. Вот пример такой ситуации (в присоединенном файле можно посмотреть результат выполнения этой консольной программы):

C#
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
using System;
 
 
public class AnotherObj
{
    public AnotherObj()
    {
    }
 
    ~AnotherObj()
    {
        Console.WriteLine("CLR is executing AnotherObj finalizer.");
    }
}
 
 
public class SomethingObj
{
    private string _s;
    private AnotherObj _somePropery;
 
    public AnotherObj SomePropery
    {
        get { return _somePropery; }
    }
 
    public SomethingObj(string s)
    {
        _s = s;
        _somePropery = new AnotherObj();
    }
 
    ~SomethingObj()
    {
        Console.WriteLine("CLR is executing SomethingObj finalizer.");
    }
}
 
 
public class ConsoleApp
{
    private static AnotherObj GetAO()
    {
        Console.WriteLine("GetAO() begin");
        SomethingObj A = new SomethingObj("wow");
        AnotherObj B = A.SomePropery;
        Console.WriteLine("GetAO() end");
        return B;
    }
 
    public static void Main()
    {
        AnotherObj b = GetAO();
 
        Console.WriteLine("Press <Enter> to start GC");
        Console.ReadLine();
        GC.Collect();
 
        Console.WriteLine("Press <Enter> to start GC #2");
        Console.ReadLine();
        Console.WriteLine(b.ToString());
        GC.Collect();
 
        Console.WriteLine("Press <Enter> to quit");
        Console.ReadLine();
 
    }
}
По результатам выполнения ясно видно что завершитель (finalizer) для класса SomethingObj выполняется раньше завершителя класса AnotherObj, что говорит само за себя.

Цитата Сообщение от GOster
Это дейчтвительно так, или в строке
AnotherObj B = A.SomePropery;
будет создана копия объекта A.SomePropery и объекту B уже будет присвоена ссылка на этот созданный объект???
Ни то, ни другое, если только свойство SomePropery не написано таким образом чтобы всегда возвращать копию объекта AnotherObj.

Вернуться к обсуждению:
Работа с памятью C#
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.05.2012, 14:25
Готовые ответы и решения:

Работа с памятью
Как можно &quot;выделить&quot; и освободить память? нужно 2-мя способами: с помощью Си шарпа и с помощью апи функций, помогите плз

Работа с памятью
Переместить массив размерностью 16 ячеек из области памяти с начальным адресом 900 в область памяти с начальным адресом А00, изменив...

Работа с памятью
Здравствуйте. Прошу скинуть любые примеры записи/чтения/редактирования данных из/в память. Заранее спасибо. :)

2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2012, 14:25
Помогаю со студенческими работами здесь

Работа с памятью
Есть приложение, которое запускает другое приложение. Нужно чтобы приложение 1 получило от приложения 2 какие-то данные (1 раз). Ни какой...

Работа с памятью
Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько - т.е. общее представление о нем имею) и у меня вопрос, можно...

AForge и работа с памятью
Добрых времени суток. При использовании AForge для захвата картинки с вебкамеры память начинает улетать буквально на глазах. За 5 секунд...

Работа с памятью процесса
Всем привет! Существует чит (трейнер), он изменяет некоторые значения в памяти игры. Я узнал эти адреса, проверяю их и получаю стандартное...

Работа напрямую с памятью
Такая проблема: есть структура Struct {int a,int b} еще есть две строки требуется скопировать структуру, а сразу за ней две строки в...

0
Новые блоги и статьи
std::mutex в C++: Хитрости и тонкости использования
Wired 03.03.2025
В C++ ключевым инструментом для обеспечения корректной работы параллельных процессов выступает std::mutex – примитив синхронизации, появившийся в стандарте C++11. До его появления использовали. . .
std::span в C++: Производительно­сть и практическое использование
Wired 03.03.2025
Традиционная работа с указателями и массивами часто приводит к ошибкам и уязвимостям в безопасности. Именно поэтому в C++20 появился std::span - легковесная обертка, обеспечивающая безопасный. . .
std::span в C++: Константность и безопасность типов
Wired 03.03.2025
std::span - представитель семейства view-типов, появившийся в стандарте C++20. Этот компонент предоставляет легковесное и эффективное решение для работы с непрерывными последовательностями данных,. . .
std::span в C++: Subview и Slice
Wired 03.03.2025
std::span - невладеющий тип данных C++, который предоставляет гибкий интерфейс для работы с непрерывными последовательностями элементов. Этот тип существенно упрощает обработку массивов и. . .
std::span в C++: Доступ к элементам и итерирование
Wired 03.03.2025
Появление std::span в стандарте C++20 стало значительным шагом вперед, предоставив разработчикам средство для безопасного и производительного доступа к непрерывным последовательностям элементов. . . .
std::span в C++: Управление массивами данных без владения
Wired 03.03.2025
Новый класс std::span, появившийся в стандарте C++20, открывает возможности для оптимизации работы с последовательными наборами данных. По сути, это легковесная обертка, которая предоставляет доступ. . .
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru