调用ipp函数会破坏变量

时间:2019-01-03 16:06:50

标签: intel-ipp

一段时间后,我再次使用IPP进行编码,并从Windows 7更新到Windows10。但是现在,当我可以使用ipp malloc函数时,它似乎破坏了变量的值。

例如此代码:

#include <stdio.h>
#include "ipp.h"


int main(void)
{
    IppiSize roiSize = {128,128};
    IppiSize  kernelSize= {3,3};
	int srcStep = 0;
	Ipp8u* pSrc = NULL;
	
	printf("%d %d \n", roiSize.width, roiSize.height);
	printf("%d %d \n", kernelSize.width, kernelSize.height);
	
    pSrc = ippsMalloc_8u(0);
	
	printf("%d %d \n", roiSize.width, roiSize.height);	
	printf("%d %d \n", kernelSize.width, kernelSize.height);	
    return 0;
}

返回:

 
128 128
3 3
128 0
3 128

因此它修改了roiSize和kernelSize的值,即使它不是故意的。标准C malloc可以正常工作,并且不会破坏变量。 我在Windows 10专业版1709上使用cygwin x86 gcc 7.4.0编译(没有任何警告),使用

HDIR = "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.1.144\windows\ipp\include"
LDADD = "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2019.1.144\windows\redist\ia32_win\ipp" -lippi -lipps -lippvm  -lippcore -lippvm  -lm
CXXFLAGS = -O0 
SOURCES= test.cpp 
OBJECTS1=$(patsubst %.cpp,%.o,$(SOURCES))
OBJECTS=$(patsubst %.c,%.o,$(OBJECTS1))

all debug profile static depend: $(OBJECTS)
	g++ -o test.exe test.o $(CXXFLAGS) -L$(LDADD) 

	
%.o: %.cpp
	g++ -c $< $(CXXFLAGS) -I $(HDIR)  

%.o: %.c
	g++ -c $< $(CXXFLAGS) -I $(HDIR) 
	
clean:
	rm -f *.o

有人看到过这样的东西吗?我不知所措,找到问题的根本原因。

0 个答案:

没有答案