{"id":19153803,"url":"https://github.com/codermjlee/mems","last_synced_at":"2025-04-09T15:09:48.194Z","repository":{"id":44104320,"uuid":"193438408","full_name":"CoderMJLee/Mems","owner":"CoderMJLee","description":"Utils for viewing memory in Swift.","archived":false,"fork":false,"pushed_at":"2019-11-04T02:57:33.000Z","size":30,"stargazers_count":328,"open_issues_count":0,"forks_count":66,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-09T15:09:38.110Z","etag":null,"topics":["ios","macos","memory","swift"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoderMJLee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-24T05:17:05.000Z","updated_at":"2025-03-01T20:38:03.000Z","dependencies_parsed_at":"2022-09-10T08:40:30.017Z","dependency_job_id":null,"html_url":"https://github.com/CoderMJLee/Mems","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderMJLee%2FMems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderMJLee%2FMems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderMJLee%2FMems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoderMJLee%2FMems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoderMJLee","download_url":"https://codeload.github.com/CoderMJLee/Mems/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055282,"owners_count":21040157,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ios","macos","memory","swift"],"created_at":"2024-11-09T08:24:19.058Z","updated_at":"2025-04-09T15:09:48.169Z","avatar_url":"https://github.com/CoderMJLee.png","language":"Swift","readme":"# Mems\n\u003e  Utils for viewing memory in Swift.\n\u003e\n\u003e 用来窥探Swift内存的小工具\n\n\n\n## 用法\n\n```swift\nfunc show\u003cT\u003e(val: inout T) {\n    print(\"-------------- \\(type(of: val)) --------------\")\n    print(\"变量的地址:\", Mems.ptr(ofVal: \u0026val))\n    print(\"变量的内存:\", Mems.memStr(ofVal: \u0026val))\n    print(\"变量的大小:\", Mems.size(ofVal: \u0026val))\n    print(\"\")\n}\n\nfunc show\u003cT\u003e(ref: T) {\n    print(\"-------------- \\(type(of: ref)) --------------\")\n    print(\"对象的地址:\", Mems.ptr(ofRef: ref))\n    print(\"对象的内存:\", Mems.memStr(ofRef: ref))\n    print(\"对象的大小:\", Mems.size(ofRef: ref))\n    print(\"\")\n}\n```\n\n### 整型\n\n```swift\nvar int8: Int8 = 10\nshow(val: \u0026int8)\n// -------------- Int8 --------------\n// 变量的地址: 0x00007ffeefbff598\n// 变量的内存: 0x0a\n// 变量的大小: 1\n\nvar int16: Int16 = 10\nshow(val: \u0026int16)\n// -------------- Int16 --------------\n// 变量的地址: 0x00007ffeefbff590\n// 变量的内存: 0x000a\n// 变量的大小: 2\n\nvar int32: Int32 = 10\nshow(val: \u0026int32)\n// -------------- Int32 --------------\n// 变量的地址: 0x00007ffeefbff588\n// 变量的内存: 0x0000000a\n// 变量的大小: 4\n\nvar int64: Int64 = 10\nshow(val: \u0026int64)\n// -------------- Int64 --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x000000000000000a\n// 变量的大小: 8\n```\n\n### 枚举\n\n```swift\nenum TestEnum {\n    case test1(Int, Int, Int)\n    case test2(Int, Int)\n    case test3(Int)\n    case test4(Bool)\n    case test5\n}\n\nvar e = TestEnum.test1(1, 2, 3)\nshow(val: \u0026e)\n// -------------- TestEnum --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x0000000000000001 0x0000000000000002 0x0000000000000003 0x0000000000000000\n// 变量的大小: 32\n\ne = .test2(4, 5)\nshow(val: \u0026e)\n// -------------- TestEnum --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x0000000000000004 0x0000000000000005 0x0000000000000000 0x0000000000000001\n// 变量的大小: 32\n\ne = .test3(6)\nshow(val: \u0026e)\n// -------------- TestEnum --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x0000000000000006 0x0000000000000000 0x0000000000000000 0x0000000000000002\n// 变量的大小: 32\n\ne = .test4(true)\nshow(val: \u0026e)\n// -------------- TestEnum --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x0000000000000001 0x0000000000000000 0x0000000000000000 0x0000000000000003\n// 变量的大小: 32\n\ne = .test5\nshow(val: \u0026e)\n// -------------- TestEnum --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x0000000000000000 0x0000000000000000 0x0000000000000000 0x0000000000000004\n// 变量的大小: 32\n```\n\n### 结构体\n\n```swift\nstruct Date {\n    var year = 10\n    var test = true\n    var month = 20\n    var day = 30\n}\n\nvar s = Date()\nshow(val: \u0026s)\n// -------------- Date --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x000000000000000a 0x0000000000000001 0x0000000000000014 0x000000000000001e\n// 变量的大小: 32\n```\n\n### 类\n\n```swift\nclass Point  {\n    var x = 11\n    var test = true\n    var y = 22\n}\n\nvar p = Point()\nshow(val: \u0026p)\n// -------------- Point --------------\n// 变量的地址: 0x00007ffeefbff590\n// 变量的内存: 0x0000000101023680\n// 变量的大小: 8\n\nshow(ref: p)\n// -------------- Point --------------\n// 对象的地址: 0x0000000101023680\n// 对象的内存: 0x00000001000072d8 0x0000000200000002 0x000000000000000b 0x0000000000000001 0x0000000000000016 0x3030303030303030\n// 对象的大小: 48\n```\n\n### 数组\n\n```swift\nvar arr = [1, 2, 3, 4]\nshow(val: \u0026arr)\n// -------------- Array\u003cInt\u003e --------------\n// 变量的地址: 0x00007ffeefbff598\n// 变量的内存: 0x0000000101023800\n// 变量的大小: 8\n\nshow(ref: arr)\n// -------------- Array\u003cInt\u003e --------------\n// 对象的地址: 0x0000000101023800\n// 对象的内存: 0x00007fff9c30f848 0x0000000200000002 0x0000000000000004 0x0000000000000008 0x0000000000000001 0x0000000000000002 0x0000000000000003 0x0000000000000004\n// 对象的大小: 64\n```\n\n### 字符串\n\n```swift\nvar str1 = \"123456789\"\n// taggerPtr（tagger pointer）\nprint(str1.mems.type())\nshow(val: \u0026str1)\n// -------------- String --------------\n// 变量的地址: 0x00007ffeefbff580\n// 变量的内存: 0x3837363534333231 0xe900000000000039\n// 变量的大小: 16\n\nvar str2 = \"1234567812345678\"\n// text（字符串存储在TEXT段）\nprint(str2.mems.type())\nshow(val: \u0026str2)\n// -------------- String --------------\n// 变量的地址: 0x00007ffeefbff570\n// 变量的内存: 0xd000000000000010 0x8000000100007610\n// 变量的大小: 16\n\nvar str3 = \"1234567812345678\"\nstr3.append(\"9\")\n// heap（字符串存储在堆空间）\nprint(str3.mems.type())\nshow(val: \u0026str3)\n// -------------- String --------------\n// 变量的地址: 0x00007ffeefbff560\n// 变量的内存: 0xf000000000000011 0x00000001007b6ad0\n// 变量的大小: 16\n\nshow(ref: str3)\n// -------------- String --------------\n// 对象的地址: 0x00000001007b6ad0\n// 对象的内存: 0x00007fff963e9660 0x0000000200000002 0x0000000000000018 0xf000000000000011 0x3837363534333231 0x3837363534333231 0x0000000000200039 0x0000000000000000\n// 对象的大小: 64\n```\n\n### 设置字节显示格式\n\n```swift\nvar int64: Int64 = 10\n\nprint(\"1个字节为1组 :\", Mems.memStr(ofVal: \u0026int64, alignment: .one))\n// 1个字节为1组 : 0x0a 0x00 0x00 0x00 0x00 0x00 0x00 0x00\n\nprint(\"2个字节为1组 :\", Mems.memStr(ofVal: \u0026int64, alignment: .two))\n// 2个字节为1组 : 0x000a 0x0000 0x0000 0x0000\n\nprint(\"4个字节为1组 :\", Mems.memStr(ofVal: \u0026int64, alignment: .four))\n// 4个字节为1组 : 0x0000000a 0x00000000\n\nprint(\"8个字节为1组 :\", Mems.memStr(ofVal: \u0026int64, alignment: .eight))\n// 8个字节为1组 : 0x000000000000000a\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodermjlee%2Fmems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodermjlee%2Fmems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodermjlee%2Fmems/lists"}