Wrap the deleting destructor for freeing native objects allocated in native code

Open
#753 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp, csharp
Domain
devtools

Research direction

Start by tracing the existing complete-destructor wrapper and the ownership path for objects created in native code. Determine where the deleting destructor needs to be wrapped and how native callers currently destroy those objects. Done means native-allocated objects are fully destroyed through the generated wrapper without changing managed-allocated object behavior.

Written by the indexing model from the issue text.

Description

Right now we only wrap the complete destructor. It is used when the native object is created in managed code because then managed code allocates the needed memory and managed code must free it as well. However, when a native object is created in native code and the user is responsible for destroying that object, the deleting destructor must be called on that object in order to fully destroy it.

Dominant language
C#
Stars
3.4k
Forks
541
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from mono/CppSharp

All issues in mono/CppSharp

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.