Memset 정의 및 사용
그 기능의 유용성은 무엇인가?memset()
?.
정의:ptr이 가리키는 메모리 블록의 첫 번째 숫자 바이트를 지정된 값(서명이 없는 문자로 해석됨)으로 설정한다.
이것은 메모리 주소에 값을 하드 코딩한다는 것을 의미하는가?
memset(&serv_addr,0,sizeof(serv_addr)
내가 이해하려고 노력하는 예야
누군가가 아주 간단하게 설명해 주시겠습니까?
memset()
비교적 간단한 작업의 매우 빠른 버전:
void* memset(void* b, int c, size_t len) {
char* p = (char*)b;
for (size_t i = 0; i != len; ++i) {
p[i] = c;
}
return b;
}
그것은memset(b, c, l)
을 결정하다l
주소에서 시작하는 바이트b
값어치가 있는c
. 위의 구현보다 훨씬 더 빠르게 수행된다.
memset()
일반적으로 값을 초기화하는 데 사용된다.예를 들어 다음 구조를 고려하십시오.
struct Size {
int width;
int height;
}
스택에 이러한 항목 중 하나를 생성하는 경우:
struct Size someSize;
그러면 그 구조물의 값은 정의되지 않을 것이다.0일 수도 있고, 스택의 해당 부분을 마지막으로 사용했을 때부터 있었던 값일 수도 있다.따라서 보통 다음과 같이 그 선을 따르십시오.
memset(&someSize, 0, sizeof(someSize));
물론 다른 시나리오에도 쓰일 수 있지만, 이것은 단지 그것들 중 하나일 뿐이다.단순히 메모리의 일부를 특정 값으로 설정하는 방법이라고 생각하십시오.
memset
데이터 유형에 관계없이 메모리 영역을 0으로 설정하는 일반적인 방법이다.라고 말할 수 있다.memset
데이터 형식은 신경 쓰지 않고 모든 바이트를 0으로 설정한다.
C++의 IMHO는 피해야 한다.memset
C++가 제공하는 형식 안전성을 회피하기 때문에 가능하면 초기화의 수단으로 생성자 또는 초기화를 사용해야 한다. 클래스 인스턴스에서 수행된 memset은 의도치 않게 무언가를 파괴할 수 있다.
예)
class A
{
public:
shared_ptr<char*> _p;
};
a memset
위의 경우 기준 카운터가 제대로 감소하지 않을 것이다.
memset-메모리의 바이트 설정
시놉시스-
#include<string.h>
void *memset(message *s,int c,size_t n)
설명- memset() 함수는 c(서명이 없는 문자로 변환됨)를 s가 가리키는 객체의 첫 번째 n바이트 각각에 복사해야 한다.위의 기능에 대해 memset()는 s 값을 반환해야 한다.
그것은 단지 기억을 특정한 가치로 설정하는 것에 불과하다.
여기 예시 코드가 있다.
Memset (const *p,unit8_t V,unit8_t L) , 여기서 P는 표적 메모리에 대한 포인터, V는 값 V로 설정될 표적 버퍼에 대한 값이고 l는 데이터의 길이입니다.
while(L --> 0)
{
*p++ = V;
}
그런 것 같다.serv_addr
일부의 로컬 또는 전역 변수struct
-filency -filencystruct sockaddr
있음)class
).
&serv_addr
그 변수의 주소를 가져가는 겁니다에 대한 첫 번째 주장으로 주어지는 유효한 주소다.memset
두 . 번 째 거의 두 .memset
충전에 사용되는 바이트(0바이트)이다.에 대한 마지막 논쟁.memset
채울 메모리 영역의 크기(바이트)이며, 이 크기는 해당 메모리 영역의 크기(바이트)serv_addr
당신의 예에 있어서 가변적이다.
그래서 이 전화는memset
전역 또는 로컬 변수를 지우다serv_addr
일화 포함 포함struct
.
실제로, GCC 컴파일러는 최적화할 때, 대개 그것을 풀거나 그 안에 넣기 위해 영리한 코드를 생성한다(실제로, 그것은 종종 내장되어 있기 때문에, GCC는 그것에 대해 매우 영리한 코드를 생성할 수 있다).
참조URL: https://stackoverflow.com/questions/13327155/memset-definition-and-use
'programing' 카테고리의 다른 글
Vuex [Quasar]에서 스토어에 액세스할 수 없음 (0) | 2022.05.18 |
---|---|
.war vs .ear file (0) | 2022.05.18 |
vuex 모듈 appState가 첫 번째 인수로 전달된 모듈 네임스페이스에서 작동하지 않음 (0) | 2022.05.18 |
Vue와 함께 VeValidate를 사용하는 경우 "TypeError: 플러그인이 정의되지 않음" 오류를 수정하는 방법 (0) | 2022.05.18 |
최대 절전 모드에서 분리된 객체를 다시 연결하는 적절한 방법은 무엇인가? (0) | 2022.05.17 |