草庐IT

c - malloc(sizeof(int)) vs malloc(sizeof(int *)) vs (int *)malloc(sizeof(int))

我承认这三个都有不同的含义。但是,我不明白这些具体情况适用于哪些特定情况。任何人都可以分享每个例子吗?谢谢。malloc(sizeof(int))malloc(sizeof(int*))(int*)malloc(sizeof(int)) 最佳答案 malloc(sizeof(int))表示您正在从堆中分配空间来存储int。您将保留int所需的尽可能多的字节。这会返回一个你应该转换为int*的值。(指向int的指针。)正如一些人所指出的,C中的典型做法是让隐式转换来处理这个问题。malloc(sizeof(int*))表示您正在从堆中

c - malloc(sizeof(int)) vs malloc(sizeof(int *)) vs (int *)malloc(sizeof(int))

我承认这三个都有不同的含义。但是,我不明白这些具体情况适用于哪些特定情况。任何人都可以分享每个例子吗?谢谢。malloc(sizeof(int))malloc(sizeof(int*))(int*)malloc(sizeof(int)) 最佳答案 malloc(sizeof(int))表示您正在从堆中分配空间来存储int。您将保留int所需的尽可能多的字节。这会返回一个你应该转换为int*的值。(指向int的指针。)正如一些人所指出的,C中的典型做法是让隐式转换来处理这个问题。malloc(sizeof(int*))表示您正在从堆中

c - 为什么 char[] 在堆栈上,而 char * 在堆上?

我对正在发生的事情感到非常困惑。我一直认为char*和char[]是可以互换的,但是在查看内存地址之后,似乎char*在堆中分配空间,而char[]在堆栈上分配内存。charstack[]="hello";char*heap="hello";char*heap_string_malloc=malloc(5);heap_string_malloc="hello";printf("Addressofstack[0]:%p\n",stack);printf("Addressofheap[0]:%p\n",heap);printf("Addressofheap_string_malloc[0]

c - 为什么 char[] 在堆栈上,而 char * 在堆上?

我对正在发生的事情感到非常困惑。我一直认为char*和char[]是可以互换的,但是在查看内存地址之后,似乎char*在堆中分配空间,而char[]在堆栈上分配内存。charstack[]="hello";char*heap="hello";char*heap_string_malloc=malloc(5);heap_string_malloc="hello";printf("Addressofstack[0]:%p\n",stack);printf("Addressofheap[0]:%p\n",heap);printf("Addressofheap_string_malloc[0]

c - 如果 free() 知道我的数组的长度,为什么我不能在我自己的代码中要求它?

我知道将动态分配的数组的长度传递给操作它们的函数是一种常见的约定:voidinitializeAndFree(int*anArray,size_tlength);intmain(){size_tarrayLength=0;scanf("%d",&arrayLength);int*myArray=(int*)malloc(sizeof(int)*arrayLength);initializeAndFree(myArray,arrayLength);}voidinitializeAndFree(int*anArray,size_tlength){inti=0;for(i=0;i但是,如果我

c - 如果 free() 知道我的数组的长度,为什么我不能在我自己的代码中要求它?

我知道将动态分配的数组的长度传递给操作它们的函数是一种常见的约定:voidinitializeAndFree(int*anArray,size_tlength);intmain(){size_tarrayLength=0;scanf("%d",&arrayLength);int*myArray=(int*)malloc(sizeof(int)*arrayLength);initializeAndFree(myArray,arrayLength);}voidinitializeAndFree(int*anArray,size_tlength){inti=0;for(i=0;i但是,如果我

c - 确定 C 中动态分配内存的大小

C中有没有办法找出动态分配内存的大小?例如,之后char*p=malloc(100);有没有办法找出与p相关的内存大小? 最佳答案 没有找到此信息的标准方法。但是,一些实现提供了像msize这样的函数来执行此操作。例如:_msize在Windows上malloc_size在MacOS上malloc_usable_size在带有glibc的系统上但请记住,malloc将分配请求的最小大小,因此您应该检查您的实现的msize变体是否实际返回对象的大小或实际在堆上分配的内存。 关于c-确定C中

c - 确定 C 中动态分配内存的大小

C中有没有办法找出动态分配内存的大小?例如,之后char*p=malloc(100);有没有办法找出与p相关的内存大小? 最佳答案 没有找到此信息的标准方法。但是,一些实现提供了像msize这样的函数来执行此操作。例如:_msize在Windows上malloc_size在MacOS上malloc_usable_size在带有glibc的系统上但请记住,malloc将分配请求的最小大小,因此您应该检查您的实现的msize变体是否实际返回对象的大小或实际在堆上分配的内存。 关于c-确定C中

c++ - 如何获取使用 malloc() 分配的内存块的大小?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:HowcanIgetthesizeofanarrayfromapointerinC?IsthereanywaytodeterminethesizeofaC++arrayprogrammatically?Andifnot,why?我从C风格的函数中获得了一个指向一block已分配内存的指针。现在,出于调试目的了解如何big这个指针指向的分配的内存块是。还有什么比盲目地越界引发异常更优雅的吗?提前致谢,安德烈亚斯编辑:我在Windows上使用VC++2005,在Linux上使用GCC4.3编辑2:我在VC++2

c++ - 如何获取使用 malloc() 分配的内存块的大小?

这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:HowcanIgetthesizeofanarrayfromapointerinC?IsthereanywaytodeterminethesizeofaC++arrayprogrammatically?Andifnot,why?我从C风格的函数中获得了一个指向一block已分配内存的指针。现在,出于调试目的了解如何big这个指针指向的分配的内存块是。还有什么比盲目地越界引发异常更优雅的吗?提前致谢,安德烈亚斯编辑:我在Windows上使用VC++2005,在Linux上使用GCC4.3编辑2:我在VC++2