1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00
srs/trunk/3rdparty
Winlin 23d2602c34
UniquePtr: Support SrsUniquePtr to replace SrsAutoFree. v6.0.136 (#4109)
To manage an object:

```cpp
// Before
MyClass* ptr = new MyClass();
SrsAutoFree(MyClass, ptr);
ptr->do_something();

// Now
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
```

To manage an array of objects:

```cpp
// Before
char* ptr = new char[10];
SrsAutoFreeA(char, ptr);
ptr[0] = 0xf;

// Now
SrsUniquePtr<char[]> ptr(new char[10]);
ptr[0] = 0xf;
```

In fact, SrsUniquePtr is a limited subset of SrsAutoFree, mainly
managing pointers and arrays. SrsUniquePtr is better than SrsAutoFree
because it has the same API to standard unique ptr.

```cpp
SrsUniquePtr<MyClass> ptr(new MyClass());
ptr->do_something();
MyClass* p = ptr.get();
```

SrsAutoFree actually uses a pointer to a pointer, so it can be set to
NULL, allowing the pointer's value to be changed later (this usage is
different from SrsUniquePtr).

```cpp
// OK to free ptr correctly.
MyClass* ptr;
SrsAutoFree(MyClass, ptr);
ptr = new MyClass();

// Crash because ptr is an invalid pointer.
MyClass* ptr;
SrsUniquePtr<MyClass> ptr(ptr);
ptr = new MyClass();
```

Additionally, SrsAutoFreeH can use specific release functions, which
SrsUniquePtr does not support.

---------

Co-authored-by: Jacob Su <suzp1984@gmail.com>
2024-07-09 10:29:36 +08:00
..
ffmpeg-4-fit SRS5: MP3: Support decode mp3 by FFmpeg natively. (#296) (#3340) 2022-12-26 18:06:38 +08:00
gperftools-2-fit Squash: Fix bugs 2021-12-26 17:30:51 +08:00
gprof Compress repository, remove gprof files. 2019-12-25 18:30:55 +08:00
gtest-fit UTest: Upgrade gtest to 1.11 and support clion. (#2970) 2022-03-17 16:56:52 +08:00
httpx-static Support SRS Stack token for authentication. v6.0.74 (#3794) 2023-09-08 08:22:45 +08:00
libsrtp-2-fit RISCV: Patch ST and libsrtp. #3115 2022-07-20 21:53:39 +08:00
openssl-1.1-fit AppleM1: Update openssl to v1.1.1l 2022-08-14 22:46:51 +08:00
patches SRT: Log level to debug when no socket to accept. v5.0.180 v6.0.78 (#3696) 2023-09-21 15:10:23 +08:00
signaling Upgrade jquery from 1.10.2 to 1.12.2 (#3571) 2023-06-30 06:28:10 +08:00
srs-bench SmartPtr: Fix SRT source memory leaking. v6.0.134 (#4106) 2024-07-04 16:08:42 +08:00
srt-1-fit Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808) 2023-09-21 22:23:56 +08:00
st-srs UniquePtr: Support SrsUniquePtr to replace SrsAutoFree. v6.0.136 (#4109) 2024-07-09 10:29:36 +08:00
openssl-OpenSSL_1_0_2u.tar.gz Revert part of 01d5e4da, to keep both openssl 1.0 and 1.1, because SRTP depends on 1.0 2020-04-03 14:03:57 +08:00
opus-1.3.1.tar.gz For #1659, #307, add opus codec library 2020-03-22 14:03:48 +08:00
README.md Upgrade libsrt to v1.5.3. v5.0.183 v6.0.81 (#3808) 2023-09-21 22:23:56 +08:00

http-parser-2.1.zip

nginx-1.5.7.zip

srt-1-fit srt-1.5.3.tar.gz

openssl-1.1-fit openssl-1.1.1l.tar.gz

openssl-1.1.0e.zip openssl-OpenSSL_1_0_2u.tar.gz

libsrtp-2.3.0.tar.gz

ffmpeg-4.2.tar.gz opus-1.3.1.tar.gz

gtest-fit

gperftools-2-fit

st-srs st-1.9.zip state-threads state-threads-1.9.1.tar.gz

JSON

USRSCTP

links: