Через некоторое время я снова поднял кодирование с IPP и произвел обновление с windows 7 до windows 10. Но теперь кажется, что это может повредить значение переменных, когда я могу использовать функцию 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 работает нормально и не портит переменные.Я скомпилировал (без предупреждения) с Cygwin x86 GCC 7.4.0, на Windows 10 Pro версии 1709, используя
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
Кто-нибудь уже видел что-нибудь подобное?Я не могу найти причину проблемы.