스택
-
inout 파라미터 작동 방식 파해치기Apple🍎/Swift 2025. 3. 11. 22:21
Swift에서 함수의 파라미터로 전달 된 값은 타입에 따라 다르게 동작하며,Inout 키워드를 통해 이 동작 방식을 변경할 수 있는데요. 오늘은 이에 대해 자세히 알아보도록 하겠습니다. 기본 파라미터 동작 방식 Swift에는 두 가지 주요 데이터 타입이 있죠? 값 타입 (Value Type) : Int, String 같은 기본 타입 또는 struct, enum 참조 타입(Reference Type) : class 값 타입은 스택에 저장되며 값을 넘겨 줄 때 원래 값을 복사를 하여 복사본을 넘겨주기 때문에 새로 넘겨 받은 곳에서 값을 변경해도 원래 값에는 영향이 가지 않습니다. 그에 비해 참조 타입은 힙에 저장되며 값을 넘겨 줄때 참조값(메모리 주소)를 넘겨주기 때문에 새로 넘겨 받은 곳에서도 같은 ..
-
동적 배열: 스택의 한계를 넘어서CS💻/DS & Algorithm 2025. 2. 27. 19:34
자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를 하긴 해야 하는데...... )실질적인 필요를 못 느끼니 어지간히 하기 싫더군요. 그래도 하긴 해야 하니까. ( 굶어 죽지 않으려면 ) 이왕이면 좀 더 쓸모있고 재미있게 정리를 해보려고 합니다. 가봅시다. 레츠기릿동적 배열이 뭐고, 어떻게 쓰고를 알기 전에 이놈이 '왜' 필요하게 되었는지를 먼저 알아야하지 않을까요?등장 배경 : 스택의 한계우리가 작성한 프로그램이 실행되기 위해서는 운영체제로부터 메모리를 할당받은 뒤 목적에 따라 메모리 영역을 구분하여 앱을 실행하는 데 필요한 데이터들을 다루는데 사용합니다. 프로세스는 ..
-
클로저 종결판Apple🍎/Swift 2025. 2. 23. 21:58
앱을 개발할 때 꼭 마주치게 되는 '클로저'라는 놈, 이 정도 봤으면 정들 때도 되었는데이놈이 모양도 야시꾸리하고 형태도 왔다 갔다 해서 뭔가 찝찝한 녀석입니다. 그래서 오늘날 잡고 산산조각 내보려고 합니다. 가보시지요. 렛츠기딧 클로저는 보통 어떤 동작을 정의할 때 사용하는데요. 컴포넌트 재활용시 동작부만 따로 프로퍼티로 만든다던가 동작의 일부를 런타임 중에 결정한다던가 등... 근데 생각해보면 이미 동작을 나타낼 수 있는 것이 이미 존재합니다. 이름하여 함수 그쵸 함수를 이용하면 여러 가지 동작을 미리 정의하고 호출을 통해 코드의 여러 부분에서 활용할 수 있졍그럼 이미 있는데 뭐 한다고 클로저라는 것을 만들었을까요????전통적인 함수의 한계전통적인 프로그래밍에서 함수가 연산을 위해 사용 가능한 값..
-
함수 호출시 매개변수 전달 방법 3가지Programming🧑💻/Cpp 2025. 2. 5. 23:29
값에 의한 전달 ( Pass by Value ) 함수 호출시 매개 변수의 복사본이 호출된 함수의 스택 메모리에 생성됩니다. 원본 데이터와 완전히 독립된 메모리 공간을 사용합니다. 함수 종료시 복사본은 스택에서 자동으로 해제 됩니다. void processData(int data) { data = data + 1; // 값을 복사했기 때문에 원본 데이터에 영향 없음}int main() { int value = 5; processData(value); print("value=%d",value); // value 값은 여전히 5} 포인터에 의한 전달 ( Pass by Pointer )메모리 주소값만 복사되어 전달됩니다.포인터 자체는 호출된 스택 프레임내에 생성되지만 크기는 항상 고정됩..
-
콜 스택 동작을 통해 알아보는 함수 호출Programming🧑💻/Cpp 2025. 2. 4. 23:29
콜 스택이란?프로그램이 실행되어 메모리에 올라오면, 운영체제는 해당 프로그램을 프로세스라는 실행단위로 관리하면서 필요한 컴퓨팅 자원 (CPU 시간, 메모리 등) 을 할당합니다. 각 프로세스는 자신만의 독립된 메모리 공간을 할당받는데, 이를 프로세스의 메모리 구조라고 합니다. 프로세스는 뭘까?프로그램은 컴퓨터가 특정 작업을 수행하기 위해 작성된 명령어들의 집합입니다. 쉽게 말해 우리가 하드디스크에 저장해둔 실행 파일이라고 할 수 있죠. 예를 들어 워드나 크롬 브라우저 같은people-analysis.tistory.com 프로세스의 메모리는 크게 다음과 같은 영역으로 구분됩니다. 코드(텍스트) 영역: 실행할 프로그램의 코드가 저장되는 영역데이터 영역: 전역변수와 정적(static) 변수가 저장되는 영역힙(H..
-
[JAVA] data type : 원시형과 참조형의 차이Programming🧑💻/Java 2022. 9. 28. 23:10
- 참조형(Reference type) // String class로 "java"라는 문자열을 객체를 만든뒤 // language 변수는 만든 객체를 참조한다. String language = new String("java"); - 원시형(primitive type) // 변수 a에 값 1을 저장한다. int num = 100; 변수에 값을 지정할 때 변수를 지정 시 Stack 영역에 변수가 올라간다. 원시형 변수를 사용하면 Stack 상에서 변수가 값을 지니고 있다. "new" 키워드를 사용하여 클래스를 통해 객체를 만들면 Heap 영역에 생성한 객체에 대한 메모리가 할당되어 저장된다. 참조형 변수를 사용하면 원시형 변수가 Stack 상에 값을 가지고 있는 것과 달리 객체가 저장되어 있는 Heap의 메..