在 C 中另一个函数调用的函数中使用 malloc 崩溃 [VS2010]



我想在一个函数中强制转换malloc,我有这段代码:

#include <stdio.h>
#include <stdlib.h>
#define maxLength 4
typedef short int *set;

void func(set *a)
{ 
func1(a);
}
void func1(set *a)
{
*a=malloc(maxLength*sizeof(set));
(*a)[0]=10;
(*a)[1]=13;
(*a)[2]=15;
}
void main()
{
set a;
func(&a);
printf("%d %d %d",a[0],a[1],a[2]);
}

VS2010 代码:

#include <stdlib.h>
#include "stdafx.h"
#include <stdio.h>
#include "12.h"
#define maxLength 4
typedef int *set;

void func(set *a){
func(a);
}
void func1(set *a){
*a=reinterpret_cast<set>(malloc(maxLength*sizeof(set)));
(*a)[0]=10;
(*a)[1]=13;
(*a)[2]=15;
}

这是在VS2010中执行此操作的方法吗? 因为它编译但崩溃了 崩溃细节 :Unhandled exception at 0x00c610a9 in 11.exe: 0xC00000FD: Stack overflow.因为在代码块中它工作得很好

问题是:为什么它在代码块中确实有效,但在VS2010中不起作用

在你的VS代码中,你有这个:

void func(set *a){
func(a);
}

这是一个非终止递归,因此堆栈溢出。

FWIW,您显然正在C++编译代码,因为您使用的reinterpret_cast<set>仅在C++中有效。

那么函数原型应该是func1(Set **a)

相关内容

  • 没有找到相关文章

最新更新